利用IntentService實現在broadcastreceiver中比較耗時的任務

============================== 在主界面手動發送廣播
package com.huawei.tj.bi.monitor;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        Button btn = (Button) findViewById(R.id.btn);
        btn.setOnClickListener(new View.OnClickListener() {
              
               @Override
               public void onClick(View arg0) {
                    Intent intent = new Intent();
                    intent.setAction("com.qlj.myReceiver");
                    sendBroadcast(intent);

               }
          });
    }
}

========================================廣播接受者啓動intentService
package com.huawei.tj.bi.monitor;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class MyReceiver extends BroadcastReceiver {

     @Override
     public void onReceive(Context arg0, Intent arg1) {
          Intent intent = new Intent(arg0,SmsService.class);
          intent.putExtra("key1", "value1");
          intent.putExtra("key2", "value2");
          intent.putExtra("key3", "value3");
          arg0.startService(intent);

     }

}

=====================================IntentService 中啓動線程完成耗時任務 
package com.huawei.tj.bi.monitor;

import android.app.IntentService;
import android.content.Intent;
import android.util.Log;

public class SmsService extends IntentService {

        public SmsService() {
               super("com.huawei.tj.bi.monitor.SmsService" );
       }

        @Override
        protected void onHandleIntent(Intent intent) {
               final String value1 = (String) intent.getExtras().get ("key1" );
               final String value2 = (String) intent.getExtras().get ("key2" );
               final String value3 = (String) intent.getExtras().get ("key3" );
               //Toast.makeText(getApplicationContext(), value1+value2+value3, 1).show();
               new Thread(){
                      public void run() {
                           Log. i("xxxxxxxx", value1+value2+value3);
                            try {
                                  Thread. sleep(20000);
                           } catch (InterruptedException e) {
                                   // TODO Auto-generated catch block
                                  e.printStackTrace();
                           }
                            //Toast.makeText(getApplicationContext(), value1+value2+value3+"--after", 1).show();
                           Log. i("xxxxxxxx", value1+value2+value3+ "--after");
                     };
              }.start();
              
       }

}

========================================文件清單
<?xml version= "1.0" encoding ="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.huawei.tj.bi.monitor"
    android:versionCode= "1"
    android:versionName= "1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.huawei.tj.bi.monitor.MainActivity"
            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=".SmsService" ></service>
       
        <receiver android:name=".MyReceiver">
            <intent-filter>
                <action android:name="com.qlj.myReceiver" />
            </intent-filter>
        </receiver>
    </application >

</manifest>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章