正如標題所說,有沒有辦法異步運行BroadcastReceiver onReceive()
方法?BroadcastReceiver異步onReceive
根據其實現,android在主線程上運行onReceive()
方法。
我正在使用BroadcastReceiver
明確請求與USB設備進行通信的權限。當請求權限對話框獲得權限時,將調用onReceive()
方法,但由於它在主線程上運行,所以在完成時沒有辦法(至少我不知道)發出信號。輪詢布爾標誌會阻塞主線程,從而阻止onReceive()
方法被調用。
是否有異步調用onReceive()
的方法,或者是否有其他方式顯式地(不使用清單中的意圖過濾器)請求權限並連接到USB設備?
編輯:我希望它的方法阻塞,直到獲得許可和連接建立。
是的,這是一個解決方案,但(請參閱編輯)我想阻止,直到我有權限。 –
「當請求權限對話框已獲得權限時,將調用onReceive()方法」。當授予權限後,您的接收器是不是收到廣播? –
是的,這是正確的,當獲得許可時,'UsbManager'廣播'PendingIndent'並且接收者調用'onReceive()'並檢查意圖附加項。但是這在主線上運行。 –