2012-07-27 55 views
1

在我的應用程序中,我有一個簡單的按鈕,啓動第二個活動,啓動微調(如果這是相關的)並執行一些http連接。第二項活動也可以通過運行並偵聽藍牙連接的服務啓動。Android活動被意外重複發起

這個問題並沒有發生在我的里程碑(2.1-update1)手機上,而是在運行2.3的同事手機上,我相信。當他們按下按鈕啓動第二個活動(完全忽略服務部分)時,它們將多次啓動該活動,當他們按下第二個屏幕時,他們將放置在第二個屏幕的另一個實例上,而不是返回到第一個活動。

我提到這個服務的一部分,有兩個原因,第一個是這個問題在我實現服務時開始發生,第二個是因爲我有一個單獨的問題,客戶端沒有正確管理服務方面,以便當通過服務而不是按鈕啓動第二個活動時,我會看到這種行爲。由於該消息正在發送給所有客戶端(應該只有一個),我看到該服務產生了第二個活動的多次啓動。但再次按下按鈕,這個已經解決的服務問題不應該負責。

現在,我已經放置了兩件事來防止這種情況再次發生。我已經將第二個activity標記爲singleTask(android:launchMode =「singleTask」)並注意到我已經啓動了第二個activity作爲startActivityForResult,但是當它返回時沒有設置或使用它。這不會導致任何錯誤或任何內容,但我將其更改爲普通的startActivity。

我沒有物理訪問其他手機,所以我不能掛鉤到logcat或任何東西,因爲它在別處的另一個辦公室。

其他手機不再看到問題,但我擔心我已經隱藏了問題,而不是真正解決問題,並想知道是否有人可以提供一些見解?

回答

0

在開始服務時,不同手機出現不同症狀之前,我遇到了問題。有些人會重新啓動(殺死並啓動)服務多次,其他人則不會。我在猜測,因爲您的朋友的手機多次重新啓動服務,無論如何,您的活動每次重新啓動時都會被調用。

試試這個,你能在你的服務中顯示通知嗎?如果是這樣做的:

startForeground(ID_NOTIFICATION, notification); 

這使得服務始終在前臺運行,這是不太可能搭載Android被殺死。

+0

我確實在使用該方法的服務中顯示通知,我也在使用setForeground(true);但logcat說它忽略了它,爲了以防萬一,我將它刪除了。我不相信該服務正在被殺害。 – Bryan 2012-07-27 18:02:55