簡體   English   中英

廣播接收器中的事件監聽器?

[英]Event listener in a broadcast receiver?

因此,這可能是一個非常基本的設計問題,但是我只是不確定如何去做。

通常,當我使用事件偵聽器時,可以在任何類中定義它,然后在Activity中覆蓋必需的方法,並根據需要實例化該類和偵聽器。

但是,在這種情況下,我有MainActivity類(它也實現了偵聽器),一個類(稱為testClass)實現了偵聽器以及廣播接收器類。 廣播接收器類實例化調用testClass。 現在,我想做的是在testClass中調用給定函數時,在MainActivity中更新TextView。

不知道如何去做。

希望這個不穩定的問題描述是有意義的。

這是我過去使用后台服務更新屏幕上顯示的數據時解決的一個問題。 我使用的一般模式是向處理類(在這種情況下,我認為是您的TestClass)添加一個成員變量,該成員變量是一個Map(命名為mCallbackMap之類的東西),並以android.os.Handler作為鍵,而您的偵聽器對象為值(通常這是您定義的接口)。 需要在活動中創建並因此與主線程相關聯的處理程序,因為您不能從主線程外部更改活動的用戶界面; 您將使用Handler將可運行對象發布到主線程,而不是直接對其進行操作。

當活動開始時,可​​能在onCreate,onStart或onResume中,您將使用mCallbackMap的put()方法將其注冊為TestClass的回調。 只需實例化一個Handler,您也將其存儲為活動的成員變量,然后將其用作鍵,將Activity用作值。 您需要在onPause或onStop中刪除該回調,以便在活動消失后不會泄漏該活動。

然后,一旦TestClass完成廣播提供的內容后,您將遍歷mCallbackMap(也許您有多個回調,也許沒有)並調用Handler.post(Runnable)。 在Runnable的run()方法中,適當地調用回調的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM