在后台活动时接收广播

时间:2015-01-23 11:13:22

标签: android android-broadcast android-background

我需要在Activity1中每隔5分钟显示一次对话框。因此,从线程T每5分钟发送一次广播,并在Activity1中注册接收器。所以每5分钟Activity1接收广播并显示对话框。没关系。但是,如果我从活动1转到Activity2,如果我回到活动1后5分钟后,对话框没有显示。    因为广播注册到Activity1而不是Activity2。当线程T发送广播时,Activity2将不会收到该广播,因为它没有注册。  是否有任何其他可能的解决方案来解决这个问题。

2 个答案:

答案 0 :(得分:1)

可能您不需要每5分钟使用任何分离的线程来推送对话框。在Android中,您有多种计划任务的机制。也许这会有所帮助:Scheduling recurring task in Android

答案 1 :(得分:0)

如果您只想在Activity1是当前活动时显示对话框,请分别在onCreate()onStop()注册/取消注册您的收件人:

@Override
public void onCreate(Bundle savedInstanceState) {
    ...
    yourReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            //Your implementation
        }
    ...
    registerReceiver(yourReceiver, new IntentFilter(YOUR_ACTION_STRING);
}
@Override
public void onStop() {
    ...
    unregisterReceiver(yourReceiver);
    ...
}

如果您希望接收器始终为信号做好准备,请在AndroidManifest中声明它,并为其创建自定义类:

<receiver android:name="your.package.name.YOUR_RECEIVER_CLASSNAME" >
    <intent-filter>
        <action android:name="your.action.string" />
    </intent-filter>
</receiver>