Android中Application类用法
Application類
Application和Activity,Service一樣是Android框架的一個系統組件,當Android程序啟動時系統會創建一個Application對象,用來存儲系統的一些信息。
Android系統自動會為每個程序運行時創建一個Application類的對象且只創建一個,所以Application可以說是單例(singleton)模式的一個類。
通常我們是不需要指定一個Application的,系統會自動幫我們創建,如果需要創建自己的Application,那也很簡單!創建一個類繼承Application并在AndroidManifest.xml文件中的application標簽中進行注冊(只需要給application標簽增加name屬性,并添加自己的 Application的名字即可)。
啟動Application時,系統會創建一個PID,即進程ID,所有的Activity都會在此進程上運行。那么我們在Application創建的時候初始化全局變量,同一個應用的所有Activity都可以取到這些全局變量的值,換句話說,我們在某一個Activity中改變了這些全局變量的值,那么在同一個應用的其他Activity中值就會改變。
Application對象的生命周期是整個程序中最長的,它的生命周期就等于這個程序的生命周期。因為它是全局的單例的,所以在不同的Activity,Service中獲得的對象都是同一個對象。所以可以通過Application來進行一些,如:數據傳遞、數據共享和數據緩存等操作。
應用場景:
在Android中,可以通過繼承Application類來實現應用程序級的全局變量,這種全局變量方法相對靜態類更有保障,直到應用的所有Activity全部被destory掉之后才會被釋放掉。
實現步驟:
1、繼承Application
注:繼承Application類,主要重寫里面的onCreate()方法(android.app.Application包的onCreate()才是真正的Android程序的入口點),就是創建的時候,初始化變量的值。然后在整個應用中的各個文件中就可以對該變量進行操作了。
2、在ApplicationManifest.xml文件中配置自定義的Application
<applicationandroid:name="CustomApplication"> </application>3、FirstActivity.java
注:只需要調用Context的 getApplicationContext或者Activity的getApplication方法來獲得一個Application對象,然后再得到相應的成員變量即可。它是代表我們的應用程序的類,使用它可以獲得當前應用的主題和資源文件中的內容等,這個類更靈活的一個特性就是可以被我們繼承,來添加我們自己的全局屬性。
4、SecondActivity.java
public class SecondActivity extends Activity {private CustomApplication app;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);app = (CustomApplication) getApplication(); // 獲取應用程序Log.i("SecondActivity", "當前值=====" + app.getValue()); // 獲取全局值} }5、最終AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.android.test"android:versionCode="1"android:versionName="1.0"><uses-sdkandroid:minSdkVersion="8" /><applicationandroid:icon="@drawable/icon"android:label="@string/app_name"android:name="CustomApplication"><!-- 將我們以前一直用的默認Application設置成自定義的CustomApplication --><activityandroid:name=".FirstActivity"android:label="@string/app_name"><intent-filter><actionandroid:name="android.intent.action.MAIN" /><categoryandroid:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activityandroid:name=".SecondActivity"android:label="@string/app_name"></activity></application> </manifest>
原文URL: http://www.cnblogs.com/renqingping/archive/2012/10/24/Application.html
總結
以上是生活随笔為你收集整理的Android中Application类用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 看Volley源码,对HTTP缓存机制分
- 下一篇: Android高效加载大图、多图解决方案