我需要在 Activity1 中每 5 分钟显示一次对话框。因此,每 5 分钟从线程 T 发送一次广播,并在 Activity1 中注册接收器。所以每 5 分钟 Activity1 接收广播并显示对话框。没关系。但是,如果我从活动 1 转到活动 2,如果我在 5 分钟后返回活动 1,则对话框不会显示。因为广播注册到Activity1而不是Activity2。当线程 T 发送广播时,Activity2 将不会收到,因为它没有注册。是否有任何其他可能的解决方案来解决这个问题。
问问题
1167 次
2 回答
1
可能您不需要每 5 分钟使用任何单独的线程来推送对话。在 Android 中,您有几种调度任务的机制。也许这会有所帮助:Scheduling recurring task in Android
于 2015-01-23T11:21:11.953 回答
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>
于 2015-01-23T11:20:11.057 回答