Android 学习系列 - Application

Android Application

关于

安卓运行的时候会为每一个应用创建一个Application 类的对象,单例,每一个Application在一个单独的进程中运行。app 会存储系统相关的信息。

通常我们是不需要指定一个Application的,系统会自动帮我们创建,如果需要创建自己的Application,那也很简单!创建一个类继承Application并在AndroidManifest.xml文件中的application标签中进行注册

app 里边的所有activity都会在这个进程上上运行。 app 里边定义的全局变量共享给所有activity。

Application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。因为它是全局的单例的,所以在不同的Activity,Service中获得的对象都是同一个对象。所以可以通过Application来进行一些,如:数据传递、数据共享和数据缓存等操作。

sample

public class MyApplication extends Application {

private static MyApplication singleton;private String val;// 单例模式public static MyApplication getInstance() {    return singleton;}@Overridepublic void onCreate() {    super.onCreate();    singleton = this;    // 直到所有的activity都被kill,Application才会被销毁    // 所以这里的变量会直到最后才会被销毁    setValue('global varaibale');}public void setValue(String val) {    this.val = val;}

}
public class MyActivity entends Activity {
private MyApplication app;

@Override public void onCreate(Bundle saveInstanceState) {    super.onCreate(saveInstanceState);    setContentView(R.layout.main);    // activity 中获取app 对象    app = (MyApplication) getApplication();}

}

app 的进程状态

android控制内存管理和进程的管理,app 任何时候都可能被kill掉,kill 的优先级由app的组件的优先级以及app间相互依赖的关系决定。

优先级决定等级树

  1. Active Process (Critical Priority)

用户在操作的component 属于这个process

  1. 为了保证 active process 能够正常运行,系统会通过kill 其他应用来腾出资源

  2. 具体包含如下组件

正在交互的activity

  1. 正在执行 onReceive 的BroadCaset Receiver

  2. 正在执行 onStart, onCreate, onDestroy 的Service

  3. 标记为在前台运行的service ?

  4. Visible Process (High Priority)

通常为可见但是没交互的activity

  1. Started Service Process (High Priority)

  2. Background Process (Low Priority)

  3. Empty Process (Low Priority)

app 处理onCreate 以外的其他状态函数

  1. onLowMemory

当后台进程被kill,当前仍然缺乏资源的情况会被调用

  1. onTrimMemory

  2. onConfigurationChanged

如果应用依赖系统设置,设置改变过后可以通过这个函数监听

关键字:activity, APP, process, oncreate


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部