Android 如何实时地从一个活动向另一个活动发送消息
我有两个活动,当我打开Android 如何实时地从一个活动向另一个活动发送消息,android,android-activity,Android,Android Activity,我有两个活动,当我打开Activity2时,Activity1不会关闭。在Activity1中,我有一个用于发布代码的句柄(handler.postDelayed()),当此代码运行时,我需要通知我的Activity2以便执行其他代码 我的问题是:如何在不重新打开的情况下将此消息发送到活动2 我尝试将意图与特定操作一起使用,并在活动2中的onNewIntent()中捕获它;它可以工作,但问题是这会重新打开我的活动2。我无法将数据保存在SharedPrefs中,因为我的postDelayed()没
Activity2
时,Activity1
不会关闭。在Activity1
中,我有一个用于发布代码的句柄(handler.postDelayed()
),当此代码运行时,我需要通知我的Activity2
以便执行其他代码
我的问题是:如何在不重新打开的情况下将此消息发送到活动2
我尝试将意图
与特定操作一起使用,并在活动2中的onNewIntent()
中捕获它;它可以工作,但问题是这会重新打开我的活动2
。我无法将数据保存在SharedPrefs中,因为我的postDelayed()
没有固定的时间,所以我必须一直检查
有人知道我如何在运行postDelayed()
时发送此消息,以及我如何在Activity2
中捕获此消息而不重新打开它吗?如果可能的话,请发布一个例子或一个链接
非常感谢…您不应该使用活动来处理长时间运行的代码,您可能应该考虑创建一个来处理您的背景代码。IntentService
可以在运行完代码后广播新的Intent
。让您的第一个活动
启动服务
,然后在第二个活动
中实例化一个,以侦听服务
的更新
发送广播意图
不会启动或恢复活动
。
活动的广播接收器
接收并处理
Intent
对象,即使你的应用程序在后台,但不在后台
将你的应用程序强制放到前台
这是一个简单的解决方案,如@njzk2所说,只需添加
<activity ..
android:launchMode= "singleInstance" />
或
(两种方法都有效)
感谢启动活动时使用单实例模式。您可以将广播消息从第一个活动发送到第二个活动。我无法使用服务。我的活动1是家庭活动,活动2可以打开也可以不打开。所以我需要在从1发送消息到2之前进行验证。如果应用程序已关闭,则应发送任何消息。但是无论如何谢谢。@Emily您所描述的案例正是服务
的目的,因为服务
可以在应用程序终止后继续存在,而活动
则不能。我不知道发送消息之前需要“验证”是什么意思,但除非通过用户交互验证,否则可以直接在服务中执行。
<activity ..
android:launchMode= "singleTask" />