`

Android技术点记录-Service、Thread、BroadcastReceiver的结合使用

 
阅读更多

 

1、为什么不用Activity、BroadcastReceiver处理耗时操作?

      主线程 (“事件处理线程” / “UI线程”) 在5秒内没有响应输入事件, BroadcastReceiver 没有在10秒内完成返回的情况下,Android会出现ANR错误。

 

2、为什么不直接抛出Thread进行处理而要采用Service?

 

 

3、使用方式:

     Service启动时,注册BroadcastReceiver ,同时启动处理线程;

     Service中定义BroadcastReceiver 内部类,用于接收数据;

     BroadcastReceiver 中调用处理线程的handler,通过handler.sendMessage();

     由Handler完成数据的最终处理;

     其中,

     Service提供处理环境或者说容器;

     BroadcastReceiver 用于接收外部传送至Service的数据,并调用handler;

     Thread(Handler)真正完成数据的处理;

 

public class MyService  extends Service{

private MyThread myThread;
 oncreate(){
   //启动处理线程
   myThead.start();
   //注册监听
   registerReceiver();
 }
 onDestroy(){
   myThread.release();
   unregisterReceiver();
 }
public class MyReceiver extends BroadcastReceiver {

         onReceive(){
           //
             myThread.handler.sendMessage();           
         }
   }
}

 

 

public class MyThread  extends Thread {

  private Looper looper;
  private MyHandler myHandler;
   run(){
       Looper.prepare();
       looper = Looper.myLooper();
       myHandler = new MyHandler(looper);
       looper.loop();
  }
  
   realease(){
     loop.quit();
  }

}

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics