2016-09-29 57 views
1

我有两个活动,当我打开Activity2时,Activity1将不会关闭。在Activity1我有一个句柄,发布代码(handler.postDelayed()),当此代码运行时,我需要我的Activity2通知为了执行其他代码。如何实时发送消息到一个活动

我的问题是:如何在不重新打开的情况下将此消息发送至Activity2

我尝试使用Intent进行特定操作,并在onNewIntent()中使用Activity2;它的工作原理,但问题是,这重新打开我的Activity2。而且我无法将数据保存在SharedPrefs中,因为我的postDelayed()没有修复时间,所以我必须一直检查。

有没有人知道如何在我的postDelayed()运行时发送此消息,以及如何在没有重新打开的情况下在Activity2中捕获它?如果可能,请发送示例或指向其中的链接。

真的感谢...

+0

开始活动时使用单实例模式。 – njzk2

+0

您可以将第一个活动的广播消息发送到第二个活动。 –

回答

1

这是一个简单的解决方案,如说@ njzk2,只是添加

<activity .. 
     android:launchMode= "singleInstance" /> 

<activity .. 
     android:launchMode= "singleTask" /> 

(两部作品)。

谢谢

0

你不应该使用Activity来处理长期运行的代码,你应该考虑创建一个IntentService来处理你的后台代码。完成代码运行后,IntentService可以广播新的Intent。让您的第一个Activity开始Service,然后在您的第二个Activity中实例化一个BroadcastReceiver,以侦听Service的更新。

发送广播Intent不启动或恢复Activity。 对于ActivityBroadcastReceiver接收并处理 Intent对象,即使您的应用程序处于后台但不会将 强制为前台应用程序。

+0

我无法使用服务。我的activity1是家庭活动,activity2可以打开或不打开。所以我需要在发送1到2之前的消息之前进行验证。如果应用程序已关闭,则应发送任何消息。但是,谢谢任何方式。 – EmilyR

+0

@Emily你描述的情况正是'Service'的意思,因为'Service'可以在应用程序终止后持久存在,而'Activity'不能。我不知道你需要在发送消息之前“验证”你的意思,但除非通过用户交互验证,否则可以直接在“服务”中完成。 – Bryan

相关问题