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;    }    @Override    public 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

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

    • 具体包含如下组件

      1. 正在交互的activity

      2. 正在执行 onReceive 的BroadCaset Receiver

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

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

  2. Visible Process (High Priority)

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

  3. Started Service Process (High Priority)

  4. Background Process (Low Priority)

  5. Empty Process (Low Priority)

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

  1. onLowMemory

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

  2. onTrimMemory

  3. onConfigurationChanged

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

更多相关文章

  1. android资源访问机制
  2. Java/Android引用类型及其使用全面分析
  3. Android(安卓)网络连接 打开 Url下载 信息
  4. Context都没弄明白,还怎么做Android开发?[转]
  5. AIDL/IPC Android(安卓)AIDL/IPC 进程通信机制——超详细讲解及
  6. 《Android开发艺术探索》摘录2
  7. 【Android】ContentValues的用法
  8. android drawable 应用
  9. Android(安卓)Application的作用

随机推荐

  1. 文件搜索引擎FileSearch
  2. Android 中的线程
  3. Android绘图机制(一) View类
  4. 阿里Android开发规范:文件与数据库
  5. 在android中通过java层程序调用命令行的
  6. Android(安卓)进程保活方案
  7. Android筆記.
  8. Android Studio --自动删除没有用的资源,
  9. Android Studio-断点调试-no executable
  10. Android(安卓)退出应用程序问题