利用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>
发布了34 篇原创文章 · 获赞 1 · 访问量 5万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览