从网上相应的资料,我知道注册Receiver有两种方式:
1 Manifest文件中注册,这样就是系统级的.
2 代码用registerReceiver()注册,应用程序自己管理.我现在的问题是,我要用registerReceiver来注册,但是注册后我程序退出了 后,我的Receiver还要运行.
我想了下 应该是 this.registerReceiver()时的 this 要替换,但是替换成什么 才能达到我的目的呢?

解决方案 »

  1.   

    程序退出时,调用unregisterReceiver()卸载
      

  2.   

    推荐两种方法,可以使程序退出了,receiver仍然运行
    第一,就是使用系统级的注册方法,Manifest中配置
    第二,this.registerReceiver()放在一个service中,因为service是一直存在的,所以就算你程序退出了,receiver也会跟随service一起一直存在,除非你的service被主动或被动停止了
      

  3.   

    刚才经过 你的 提醒我也想到 就是 把原有的Receiver分成两份.
    第1个 manifest注册开机启动
    第2个 service来注册IntentFilter 关联 ACTION_NEW_GOING_CALL和ACTION_PHONE_STATE_CHANGED 最后问一个问题:
    manifest注册的Receiver怎么取消?因为unregistereReceiver的参数要Receiver的实例, 我这个里面Receiver已经开机启动了,我无法获取实例.
    我现在的做法是: 将开机启动的receiver在关联了 我一个自定义的 ACTION 来 结束 这个Receiver.请问有更好的方法没有?
      

  4.   

    你直接啟動一個service不就行了,在service裏進行註冊和recieve的操作
      

  5.   


    如果用户不想我的程序开机启动,那么我就应该取消我注册开机启动的Receiver 和 Service,免得被用户认为流氓了.
      

  6.   


    你设一个开关可以吗,开机广播应该是要接受的,在xml里注册的嘛。。如果开关是false,那么onReceive方法什么都不执行就可以了吧