我有一個BroadcastReceiver
它處理系統廣播,如AC連接和斷開連接。 BroadcastReceiver
收到POWER_CONNECTED
並啓動活動「MainActivity」,該活動解鎖KeyGuard
並獲取WakeLock
。在onCreate
和onResume
我動態註冊BroadcastReceiver
來收聽POWER_DISCONNECTED
。完成兩個活動接收相同的廣播
「MainActivity」啓動第二個「VideoPlayer活動」,該活動還會在POWER_DISCONNECTED
上註冊BroadcastReceiver
。
當我通過adb發送ACTION_POWER_DISCONNECT
時,我通過LogCat看到「MainActivity」首先停止。爲什麼?
如何處理「VideoPlayerActivity」首先完成?
感謝
兩個活動他們自己的Receiver被實現爲內部類。也許可以通過自定義廣播來停止第二次啓動的活動,因此它與POWER_CONNECTED意圖無關。我會在第一次使用這個廣播,但是發送一個自定義的廣播,在第二次活動中第二個接收器將使用它。所以我可以告訴他完成。發送自定義廣播後,我會完成onReceive方法中的主要活動。我會試試這個。 – AdemC
我認爲你所描述的應該起作用。但是,我不喜歡將BroadcastReceiver和Activities結合在一個實體中。主要原因是單一責任原則(http://en.wikipedia.org/wiki/Single_responsibility_principle)。 –
我同意你的意見。但是我怎麼能解決這個問題,當時我不知道這兩個活動的實例。 Brodcast接受者在他們自己的班級中獨立於活動。 – AdemC