• Android----->多线程的实现Thread、IntentService的运用


    首先建立一个Intent.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
        <Button
            android:id="@+id/btnStartNormalService"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Start NormalService"
            />
        <Button
            android:id="@+id/btnStartIntentService"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Start IntentService"
            />
    </LinearLayout>

    建立一个MyService.java 实现Thread多线程

    package com.szy.service;
    
    import android.app.Service;
    import android.content.Intent;
    import android.os.IBinder;
    import android.util.Log;
    
    public class MyService extends Service
    {
        protected static final String TAG = "IntentActivity";
        @Override
        public void onCreate()
        {
            super.onCreate();
        }
    
        @Override
        public void onDestroy()
        {
            super.onDestroy();
        }
    
        @Override
        public int onStartCommand(Intent intent, int flags, int startId)
        {
            new MyThread().start();
            return START_STICKY;
        }
    
        @Override
        public IBinder onBind(Intent intent)
        {
            return null;
        }
        
        private class MyThread extends Thread
        {
    
            @Override
            public void run()
            {
                try
                {
                    Log.i(TAG, "MyService线程ID:"+Thread.currentThread().getId());
                    Log.i(TAG, "文件下载....");
                    Thread.sleep(2000);
                } catch (InterruptedException e)
                {
                    e.printStackTrace();
                }
                
            }
            
        }
    
    }

    再建立一个ExampleIntentService.java的IntentService

    package com.szy.service;
    
    import android.app.IntentService;
    import android.content.Intent;
    import android.util.Log;
    
    public class ExampleIntentService extends IntentService
    {
        protected static final String TAG = "IntentActivity";
        
        public ExampleIntentService()
        {
            super("ExampleIntentService");
        }
    
        @Override
        protected void onHandleIntent(Intent intent)
        {
            
            try
            {
                Log.i(TAG, "MyService线程ID:"+Thread.currentThread().getId());
                Log.i(TAG, "文件下载....");
                Thread.sleep(2000);
            } catch (InterruptedException e)
            {
                e.printStackTrace();
            }
    
        }
    
    }

    最后还有建立一个IntentActivity.xml 的Activity

    package com.szy.service;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    
    public class IntentActivity extends Activity
    {
        protected static final String TAG = "IntentActivity";
        
        private Button btnStartNormalService;
        private Button btnStartIntentService;
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.intent);
            btnStartNormalService = (Button) findViewById(R.id.btnStartNormalService);
            btnStartIntentService = (Button) findViewById(R.id.btnStartIntentService);
            btnStartNormalService.setOnClickListener(listener);
            btnStartIntentService.setOnClickListener(listener);
        }
        
        private OnClickListener listener=new OnClickListener()
        {
            
        
            public void onClick(View v)
            {
                Intent intent;
                switch (v.getId())
                {
                case R.id.btnStartNormalService:
                    intent=new Intent(IntentActivity.this, MyService.class);
                    Log.i(TAG, "主线程ID:"+Thread.currentThread().getId());
                    startService(intent);
                    break;
                case R.id.btnStartIntentService:
                    intent=new Intent(IntentActivity.this, ExampleIntentService.class);
                    Log.i(TAG, "主线程ID:"+Thread.currentThread().getId());
                    startService(intent);
                    break;
                default:
                    break;
                }
                
            }
        };
    }

    记得修改AndroidManifest.mxl

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.szy.service"
          android:versionCode="1"
          android:versionName="1.0">
        <uses-sdk android:minSdkVersion="8" />
    
        <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".MainActivity"
                      android:label="@string/app_name">
            </activity>
            
            <activity android:name=".BinderActivity"
                      android:label="@string/app_name">
            </activity>
            
            <activity android:name=".IntentActivity"
                      android:label="@string/app_name">
                 <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            
            <service android:name=".ExampleService" />
            <service android:name=".BinderService" />
            <service android:name=".MyService"/>
            <service android:name=".ExampleIntentService"/>
        </application>
    </manifest>
  • 相关阅读:
    宋浩《概率论与数理统计》笔记---6.2.1、统计量定义
    宋浩《概率论与数理统计》笔记---6.1、总体与样本
    宋浩《概率论与数理统计》笔记---5.2、中心极限定理
    PHP使用curl替代file_get_contents
    PHP中的ini_set() 函数
    通俗理解中心极限定理
    宋浩《概率论与数理统计》笔记---5.1.2、切比雪夫大数定理
    Options / Lifecycle Hooks
    idea各种图标的含义
    Gradle 基础入门
  • 原文地址:https://www.cnblogs.com/yihujiu/p/5723098.html
Copyright © 2020-2023  润新知