Android:自定義Application儲存全域性變數
阿新 • • 發佈:2019-01-02
構建app時,總是需要用到一些全域性變數,我們通過自定義的Application訪問。
我們的app就是一個application,啟動application時,系統會建立一個程序ID,所有的Activity就會在此程序上執行。可以在Application建立時初始化全域性變數,同一個應用的所有Activity都可以訪問這些全域性變數以及應用程式的上下文(getApplicationContext)。
下面是一個簡單的例子:
MyApp.java
繼承Application,使用單例模式,方便訪問。
import android.app.Application; public class MyApp extends Application { private static MyApp instance = null; public static MyApp getInstance() { return instance; } @Override public void onCreate() { super.onCreate(); instance = this; } private String appInfo = "I am a custom application."; public String getAppInfo() { return appInfo; } public void setAppInfo(String appInfo) { this.appInfo = appInfo; } }
AndroidManifest.xml
只需要定義application的android:name屬性。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.xxx.xxx" > <application android:allowBackup="true" android:name=".MyApp" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@android:style/Theme.Black" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
MainActivity.java
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tvAppVariable = (TextView) findViewById(R.id.tv_app_variable); // 自定義Application,儲存全域性變數 // MyApp app = (MyApp) getApplicationContext(); // String appInfo = app.getAppInfo(); String appInfo = MyApp.getInstance().getAppInfo(); tvAppVariable.setText(appInfo); } }
可以在自定義Application中實現應用的初始化操作,定義公共變數、公共方法等。