我有两项活动,当我打开Activity2
时,Activity1
将不会关闭。在Activity1
我有一个发布代码(handler.postDelayed()
)的句柄,当此代码运行时,我需要通知我Activity2
以执行其他代码。
我的问题是:如何在不重新打开此消息的情况下将此消息发送给Activity2
。
我尝试使用具有特定操作的Intent
并在onNewIntent()
中的Activity2
中将其捕获;它有效,但问题是这会重新开启Activity2
。我无法将数据保存在SharedPrefs中,因为我的postDelayed()
没有修复时间,所以我必须一直在检查。
有人知道我postDelayed()
运行时如何发送此消息以及如何在Activity2
中将其捕获而不重新打开它?如果可能,请发布示例或链接到一个。
非常感谢...
答案 0 :(得分:1)
这是一个简单的解决方案,就像所说的@ njzk2一样,只是添加
<activity ..
android:launchMode= "singleInstance" />
或
<activity ..
android:launchMode= "singleTask" />
(两者都有效)。
由于
答案 1 :(得分:0)
您不应该使用Activity
来处理长时间运行的代码,您应该考虑创建一个IntentService
来处理您的后台代码。 IntentService
在完成代码运行后可以广播新的Intent
。让您的第一个Activity
开始Service
,然后在第二个Activity
中实例化BroadcastReceiver
,以便从Service
收听更新。
发送广播
Intent
无法启动或恢复Activity
。BroadcastReceiver
的{{1}}接收并处理Activity
即使您的应用在后台,但却没有 强迫你的应用程序到前台。