Application
一.Application是什么
一个全局单例模式的类,用于维护应用的状态。
- 当运行项目时优先于其他类运行。可以写一个自己的Application类,需要在清单文件Application标签中注册,添加name属性。
- 可以通过Context.getApplicationContext()方法获得全局上下文对象。
- 整个过程中生命周期最长
二.Application的应用
1.共享数据、传递数据、存数据
Application
public class MyApplication extends Application {
public String name;
}
注意:清单文件中要加name属性
ActivityA
public void openActivity(View view) {
MyApplication application = (MyApplication) getApplication();
application.name = "ricky";
startActivity(new Intent(this,Main2Activity.class));
}
ActivityB
@Override
MyApplication myApplication;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
//方式一
myApplication = (MyApplication)getApplication();
Log.d("amy",myApplication.name);
//方式二
myApplication = (MyApplication) getApplicationContext();
Log.d("amy",myApplication.name);
}
三.Application生命周期
public class App extends Application {
private static final String TAG = "amy";
@Override
public void onCreate() {
// 程序创建时候执行
Log.d(TAG, "onCreate");
super.onCreate();
}
@Override
public void onTerminate() {
// 程序终止时候执行
Log.d(TAG, "onTerminate");
super.onTerminate();
}
@Override
public void onLowMemory() {
// 低内存时候执行
Log.d(TAG, "onLowMemory");
super.onLowMemory();
}
@Override
public void onTrimMemory(int level) {
// 程序在内存清理时候执行
Log.d(TAG, "onTrimMemory");
super.onTrimMemory(level);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
//配置改变时执行
Log.d(TAG, "onConfigurationChanged");
super.onConfigurationChanged(newConfig);
}
}
四.BaseActivity
public abstract class BaseActivity extends AppCompatActivity{
protected abstract int layoutId();
protected abstract void initView();
protected abstract void initData();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(layoutId());
initView();
initData();
}
}
五.BaseApplication
public class MyApplication extends Application {
private static MyApplication application;
private static Context context;
@Override
public void onCreate() {
super.onCreate();
application = this;
context = getApplicationContext();
}
}