Application 类 简介
2019獨角獸企業重金招聘Python工程師標準>>>
Application 類 簡介
每次程序運行時,程序的Application 類都是保持實例化。與Activity不同;配置改變并不會導致程序重啟。通過擴展Application類,可以完成以下工作:
1.對Android 運行時廣播的應用程序級事件(如低內存)作出響應。
2.在應用組件之間傳遞對象。
3.管理和維護多個應用程序組件使用的資源。
其中后兩項工作可以使用一個單態類完成,當Manifest 中注冊了一個Application實現后,他會在創建應用程序進程的時候得到實例化。因此,Application的實現在本質上上是單態的,并且應該作為單態進行實現,以便對其方法和成員變量的訪問。
l? 擴展和使用Application類
Application 類的框架:
public?class?MyApplication?extends?Application{private?static?MyApplication?singleton; //返回應用程序實例public?static?MyApplication?getInstance(){return?singleton;}@Overridepublic?void?onCreate()?{super.onCreate();singleton=this;} }注意:必須在Manifest文件中注冊:
?
<applicationandroid:name="com.example.persontest.MyApplication"android:allowBackup="true" [……………………Manifest?nodes……………………]????????</application>雖然對于在松耦合的應用程序組件之間傳遞對象,以及維護應用程序狀態或者共享資源,這種方法特別有效;但是一般來說,創建自己的靜態單態類比為特殊用途擴展Application類更好一些,除非你還要處理一下描述的生命周期事件。
l? 重寫應用程序的生命周期事件:
Application類為應用程序的創建和終止,低可用內存和配置改變提供了事件處理程序。
通過重寫以下方法,可以為上述幾種情況實現自己的應用程序行為:
1.onCreate: 在創建應用程序是調用。可以重寫這個方法來實例化應用程序單態,以及創建和實例化任何應用程序狀態變量或者公共資源。
2.onLowMemory: 當系統資源匱乏時,具有良好行為的程序可以釋放額外的內存。這個方法一般會在后臺進已經終止,但是前臺應用程序仍然缺少內存時調用。可以重寫這個處理程序來清空緩存或者釋放不必要的資源。
3.onTrimMemory:作為onLowMemory的一個特定于應用程序的替代選擇,在Android 4.0(Api Level 13)引入(但是我在官網上看的是level 14)。當(Android Runtime )運行時決定當前應用程序應該嘗試減少內存開銷時(通常它進入后臺是)調用。它包含一個level參數,用于提供請求的上下文。
4.onConfigurationChanged:與Activity不同,在配置改變時,應用程序對象不會被終止或者重啟。如果應用程序使用的值依賴于特定的配置,則重寫這個方法來重寫加載這些值,或者在應用程序級別處理配置改變。
必須在重寫這些方法時調用超類的時間處理程序。
public?class?MyApplication?extends?Application?{private?static?MyApplication?singleton;public?static?MyApplication?getInstance()?{if?(singleton?==?null)?{singleton?=?new?MyApplication();}return?singleton;}@Overridepublic?void?onCreate()?{super.onCreate();singleton?=?this;}@Overridepublic?void?onLowMemory()?{super.onLowMemory();}@Overridepublic?void?onTrimMemory(int?level)?{super.onTrimMemory(level);}@Overridepublic?void?onConfigurationChanged(Configuration?newConfig)?{super.onConfigurationChanged(newConfig);} }轉載于:https://my.oschina.net/litengit/blog/354288
總結
以上是生活随笔為你收集整理的Application 类 简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Django获取model中字段的中文列
- 下一篇: vim中Mapping already