2013-07-22 45 views
1

我有一個應用程序在用戶完成「action A」後收聽傳入的短信。這個消息可能會在5分鐘後出現。我有兩種選擇:以清單方式啓動/停止廣播接收器

1)聲明manifest。但是我不想讓我的receiver一直在聽。這個應用程序將被使用,例如每月一次。

2)從代碼開始/停止。但是,假設用戶在製作「action A」後關閉了應用程序。據我瞭解,接收器將無法啓動。

是否有中間道路?我在manifest中聲明receiver,但是,從程序代碼中啓動並停止它。

此外,從manifest開始/停止receiverOnClick()按鈕的處理程序是一個好主意。我在其他地方看到,它在onResume()onPause()中完成。

+0

在sharedpref中保存一個值,當你收到廣播時測試 – njzk2

+0

@ njzk2請你解釋一下嗎?你的意思是說這是可能的,一個好主意? – deeJ

回答

2

是否有中間道路?

我不是禪宗大師,但在這種情況下,是的。將接收器註冊到清單中,其中android:enabled設置爲您想要的一切(true,如果它應該正在監聽廣播,則爲false)。在PackageManager上撥打setComponentEnabledSetting()即可在Java代碼中切換該狀態。

+0

非常感謝。你認爲從某種視圖的OnCLick()監聽器切換到onResume()/ onPause()是一個好主意嗎? – deeJ

+0

@deeJ:我的回答中的代碼從'onResume()'和'onPause()'做起來沒有任何意義。這就是'registerReceiver()',當你需要一個'BroadcastReceiver'時,從輸入的角度來看,某些活動或片段處於前臺。 – CommonsWare