2016-09-29 58 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

相關問題