前日,一小伙伴問我一個(gè)問題,說它解決了半天都沒解決這個(gè)問題,截圖如下:

 

大概樓主理解如下:

如果在應(yīng)用中有一個(gè)判斷wifi的開關(guān)和一個(gè)當(dāng)前音量大小的seekbar以及一個(gè)獲取當(dāng)前電量多少的按鈕,想知道如果按home鍵后調(diào)整了wifi開關(guān)信息以及媒體音量信息,再切換到前臺(tái)UI如何才會(huì)實(shí)時(shí)刷新。其實(shí)這個(gè)問題不難解決,如果你了解activity的生命周期,只需要把設(shè)置開關(guān)和seekbar的信息放在onResume中就好了,因?yàn)闊o論是鎖屏后打開或者是切換后臺(tái)再前臺(tái)都是會(huì)調(diào)用onResume的。但不由得滋生一個(gè)問題,大家都知道APP在前臺(tái)的情況下用戶依然是可以下拉狀態(tài)欄設(shè)置Wifi開關(guān)信息的,對(duì)于音量信息也是可以側(cè)邊增減,那APP一直在前臺(tái),生命周期明顯是無法實(shí)時(shí)更新了,那我們應(yīng)該如何解決呢?沒錯(cuò),沒當(dāng)改變系統(tǒng)屬性的時(shí)候,都會(huì)發(fā)出系統(tǒng)廣播,我們只需要去寫一個(gè)接收器,并根據(jù)它做響應(yīng)的操作就好了。

 

分析至此,樓主就把給這位小伙伴寫的一些代碼分享給大家,也可以幫助不太熟悉的小伙伴更加了解android的廣播以及回調(diào)機(jī)制。對(duì)于還不太明白java的回調(diào)是什么意思的小伙伴,也可以看看。

 

1)由于要使用到系統(tǒng)屬性,所以先申明權(quán)限。

復(fù)制代碼
1 <!--wifi管理必備權(quán)限--> 2 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 3 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> 4 5 <uses-permission android:name="an
        
		

網(wǎng)友評(píng)論