0
我有一個BroadcastReceiver正在監聽屏幕關閉。奇怪的廣播接收器競爭條件
由於我不想進入的原因,我需要我的活動完成(),當它暫停。
但是,廣播花了很長時間才得出結論,當它做onDestroy
方法(這是我可以放置的最後一個地方)已經取消註冊接收器,所以我的活動從未收到屏幕已經下降的通知睡着了。
什麼是最醜的kluge,我發現如果我設置了大約500ms的延遲並從onPause中的延遲Runnable調用finish(),則一切都按預期工作。然而,這是殘酷的醜陋,我想知道如果有什麼我可以做,以解決這個問題。看起來這只是屏幕超時廣播中的一個問題,因爲屏幕的動作會給我調用onPause(調用finish())。其他廣播在白天到達(可以這麼說),所以他們不會產生同樣的問題,因爲他們在一秒鐘之後處理。
活動在獲得廣播時做了什麼?這聽起來像是它做了一些與非UI相關的東西,在這種情況下,如果你想在UI沒有激活的情況下工作,那麼把它放在「Service」而不是「Activity」中可能是有意義的。 – kabuko
它在給定的條件下啓動主要活動。我想我可以將這種行爲轉移到服務上,你是對的。 –
是的,我剛剛移植到一個服務,現在一切正常。請添加您的建議作爲答案,我會給你複選標記 –