关于Service和BroadcastReceiver

1.Service(运行在后台,没有界面)
     a.定义一个继承Service的子类
          1.用startService(Intent intent)方法启动Service,无数据交互
               一定要重写的方法:
                public IBinder onBind(Intent intent){
                    return null;
               }
          2.用bindService(Intent intent,ServiceConnection conn,int flags),flags=0或BIND_AUTO_CREATE
               而ServiceConnection对象中有两个方法
               1.onServiceConnected(ComponentName name,IBinder serive)
               2. onServiceDisconnected( ComponentName name )
               所以要在 Service子类中实现IBinder重写:
          prvite MyBinder binder = new MyBinder();
          public class MyBinder extends Binder{
               //方法
          }
               public IBinder onBind(Intent intent){
                    return binder;
               } 
               在Acitivity中重写 ServiceConnection对象,实现两个方法,其中重点:
          public void  onServiceConnected(ComponentName name,IBinder serive){
                     //binder = (Service子类.MyBinder)service,获取Service的onBind方法所返回的MyBinder对象
          }
2.IntentService(用于执行耗时任务)
     a.继承IntentService子类,需要实现的方法
          protected void onHandleIntent(Intent intent){
          }

3.BroadcastReceiver(要通过intent-fliter设定一个action,用于处理能匹配的intent)
    a.继承 BroadcastReceiver的子类,需要重写的方法
     public void onReceive(Context context,Intent intent){
     }
  b.广播分类:
     普通广播:sendBroadcast()
     有序广播:sendOrderedBroadcast()
                    1.在intetFilter中可以setPtiority()
                    2.可以在setResultExtras(bundle)将数据传给下一个广播接收者
  c.设置匹配的intent的两种方法:
     1.用IntentFilter的setAction(),再调用registerReceiver(receiver,filter)注册receiver
     2.在manifest中加上
         
     

你可能感兴趣的:(关于Service和BroadcastReceiver)