久草免费在线观看-久草免费在线色站-久草免费在线视频-久草免费资源-天堂网中文在线-天堂网中文字幕

歡迎來到酷云建站平臺,全網營銷云系統加盟中心!

海量企業網站模板 · 任您選擇

美出特色,精出品質,一切為了企業更好的營銷

隱藏側欄
Beta
轉載

Android開發之接收系統broadcast:重啟后喚醒

       小程序     2021-12-16     admin     57     0    

徐州APP開發公司中,相信很多技術人員都知道PhotoGallery,PhotoGallery應用的后臺定時器雖然可以正常工作,但還不夠完美。如果用戶重啟了設備,定時器就會失效。

設備重啟后,那些持續運行的應用通常也需要重啟。通過監聽帶有BOOT_COMPLETED操作的broadcast intent,可獲知設備是否已完成啟動。只要打開設備,系統就會發送一個BOOT_COMPLETEDbroadcast intent。要想監聽它,可以創建并登記一個standalone broadcast receiver。

standalone receiver是一個在manifest配置文件中聲明的broadcast receiver。即便應用進程已消亡,standalone receiver也可以被激活。(稍后還會學習到可以同fragment或activity的生命周期綁定的dynamic receiver。)

與服務和activity一樣,broadcast receiver必須在系統中登記后才能發揮作用。如果不登記,系統就不知道該向哪里發送intent。自然,broadcast receiver的onReceive(...)方法也就得不到預定的調用了。

要登記broadcast receiver,首先要創建它。創建一個StartupReceiver新類,繼承android.content.BroadcastReceiver類,代碼如下所示。

第一個broadcast receiver(StartupReceiver.java)

public class StartupReceiver extends BroadcastReceiver{

private static final String TAG = 'StartupReceiver';

@Override

public void onReceive(Context context, Intent intent) {

Log.i(TAG, 'Received broadcast intent: ' + intent.getAction());

}

}

與服務和activity一樣,broadcast receiver是接收intent的組件。當有intent發送給StartupReceiver時,它的onReceive(...)方法會被調用。打開 AndroidManifest.xml配置文件,參照如下代碼登記上StartupReceiver。

在manifest文件中添加receiver(AndroidManifest.xml)

在manifest文件中添加receiver(AndroidManifest.xml)

登記響應隱式intent的standalone receiver和登記服務或activity差不多。我們使用receiver標簽并在其中包含相應的intent-filter。StartupReceiver會監聽BOOT_COMPLETED操作,而該操作也需要配置使用權限。因此,還需要添加一個相應的uses-permission標簽。

在配置文件中完成聲明后,即使應用并未運行,只要有匹配的broadcast intent發來,broadcast receiver就會醒來接收。一收到intent,broadcast receiver的onReceive(Context, Intent)方法即開始運行,隨后會被銷毀(如下圖所示)。

接收BOOT_COMPLETED

設備重啟后,StartupReceiver的onReceive(...)方法會被調用嗎?現在就來驗證。首先,運行更新版PhotoGallery應用。

然后,關閉設備。如果是物理設備,直接按電源鍵關機。如果是模擬器,最簡單的方法是直接退出模擬器應用。

打開設備。如果是物理設備,直接按電源鍵開機。如果是模擬器,要么重新運行應用,要么使用AVD Manager啟動應用,但要保證使用的是剛關掉的那個模擬器。

現在,選擇Tools → Android → Android Device Monitor菜單項打開Android Device Monitor。(KitKat之前,Android Device Monitor常被稱為Dalvik Debug Monitor Server或DDMS。Dalvik是Android上的運行時系統。自KitKat開始,Google又引入了ART(Android Runtime)。到了Lollipop,就只剩下ART可用了。雖然現在已改名為Android Device Monitor,但舊的名字仍時有耳聞。)

點擊Android Device Monitor的Devices選項頁中的設備。(如果看不到設備列表,請嘗試插拔USB設備或重啟模擬器。)

在Android Device Monitor窗口中,以Received broadcast intent關鍵字搜索LogCat輸出(如下圖所示)。

搜索LogCat輸出

可以在LogCat中看到表明receiver運行的日志。但如果在設備標簽頁查看設備,則可能看不到任何PhotoGallery進程。這是因為進程在運行broadcast receiver之后,就隨即消亡了。


--結束END--

本文鏈接: http://www.u0rvp.cn/start/2397.html (轉載時請注明來源鏈接)

 
本文標簽: 全部

下班PC閱讀不方便?

手機也可以隨時學習開發

微信關注公眾號“酷云”
"酷云平臺前端開發教學"
每日干貨技術分享
 

×

成為 酷云平臺 代理商!

關注

微信
關注

微信掃一掃
獲取最新優惠信息

酷云平臺公眾號

客服

聯系
客服

很高興為您服務
尊敬的用戶,歡迎您咨詢,我們為新用戶準備了優惠好禮。 咨詢客服

聯系客服:

在線QQ: 3206174

客服電話: 0516-83703228

售前咨詢 售后服務
在線交談 智能小云

工作時間:

周一至周五: 09:00 - 17:00

WAP

手機
訪問

移動端訪問
手機上也能選模板

酷云平臺手機端