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