构建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中实现应用的初始化操作,定义公共变量、公共方法等。
在Android开发中,为了实现全局变量的管理,通常会创建自定义的Application。自定义Application使得在应用启动时能初始化全局变量,并提供应用程序的上下文。通过设置AndroidManifest.xml中application的android:name属性,所有Activity都能访问这些全局变量和上下文。例如,可以创建一个MyApp.java类,继承Application并使用单例模式,以便便捷地访问和初始化应用级别资源。

被折叠的 条评论
为什么被折叠?



