推荐阅读:

Android 深刻理解Activity生命周期的作用及意义


一、概述


Application源码介绍,如下所示:
/** * Base class for maintaining global application state. You can provide your own * implementation by creating a subclass and specifying the fully-qualified name * of this subclass as the "android:name" attribute in your * AndroidManifest.xml's  tag. The Application * class, or your subclass of the Application class, is instantiated before any * other class when the process for your application/package is created. * * 

Note: There is normally no need to subclass * Application. In most situations, static singletons can provide the same * functionality in a more modular way. If your singleton needs a global * context (for example to register broadcast receivers), include * {@link android.content.Context#getApplicationContext() Context.getApplicationContext()} * as a {@link android.content.Context} argument when invoking your singleton's * getInstance() method. *

*/
概述:      Application类是为了那些需要保存全局变量设计的基本类,你可以在AndroidManifest.xml的标签中通过"android:name"属性进行使用,自定义的application作为基类会影响该程序中每个类的建立,只需要调用Context的getApplicationContext或者Activity的getApplication方法来获得一个application对象,就能做出相应的处理。

二、程序生命周期

1、onCreate():程序创建

/** * Called when the application is starting, before any activity, service, * or receiver objects (excluding content providers) have been created. * Implementations should be as quick as possible (for example using * lazy initialization of state) since the time spent in this function * directly impacts the performance of starting the first activity, * service, or receiver in a process. * If you override this method, be sure to call super.onCreate(). */@CallSuperpublic void onCreate() {}
介绍:这个函数是当应用开始之时就被调用了,比其他对象创建的早,这个实现要尽可能的快一点,因为创建时间直接在进程中影响到我们第一个activity/service或者receiver。如果你要重写这个方法必须调用super.onCreate()。

2、onTerminate():程序终止

/** * This method is for use in emulated process environments.  It will * never be called on a production Android device, where processes are * removed by simply killing them; no user code (including this callback) * is executed when doing so. */@CallSuperpublic void onTerminate() {}
介绍:应用程序对象终止时调用。但不保证一定被调用,当程序是被内核终止以便为其他应用程序释放资源,那 么将不会提醒,即不调用应用程序的对象的onTerminate方法而直接终止当前进程。

3、onLowMemory():程序低内存

/** * This is called when the overall system is running low on memory, and * actively running processes should trim their memory usage.  While * the exact point at which this will be called is not defined, generally * it will happen when all background process have been killed. * That is, before reaching the point of killing processes hosting * service and foreground UI that we would like to avoid killing. */void onLowMemory();
介绍:当后台程序已经终止资源还匮乏时会调用这个方法。好的应用程序一般会在这个方法里面释放一些不必 要的资源来应付当后台程序已经终止,前台应用程序内存还不够时的情况。

4、onTrimMemory():程序内存清理

/** * Called when the operating system has determined that it is a good * time for a process to trim unneeded memory from its process.  This will * happen for example when it goes in the background and there is not enough * memory to keep as many background processes running as desired.  You * should never compare to exact values of the level, since new intermediate * values may be added -- you will typically want to compare if the value * is greater or equal to a level you are interested in. */void onTrimMemory(@TrimMemoryLevel int level);

介绍:当系统回调确认该进程是时候回收不必要的内存了,这将例如发生在后台时,没有足够的内存保持尽可能多的后台进程运行一样。一般发生在点击Home键、Task任务菜单键时被执行。


三、实例演示


*记得把自定义的MyApplication类在AndroidManifest.xml中Application标签中设置到Android:name属性中。
public class MyApplication extends Application {    @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);    }}

//打开oneActivity  01-19 15:16:27.142: D/CARLOZ - Application(28202):   onCreate   //创建  01-19 15:16:27.172: D/CARLOZ - oneActivity(28202):   onCreate  01-19 15:16:27.232: D/CARLOZ - oneActivity3(28202):  onStart  01-19 15:16:27.232: D/CARLOZ - oneActivity3(28202):  onResume  //跳转twoActivity  01-19 15:16:27.272: D/CARLOZ -  oneActivity(28202):  onPause  01-19 15:16:27.272: D/CARLOZ -  twoActivity(28202):  onCreate  01-19 15:16:27.322: D/CARLOZ - twoActivity3(28202): onStart  01-19 15:16:27.342: D/CARLOZ - twoActivity3(28202): onResume  01-19 15:16:27.352: D/CARLOZ - oneActivity3(28202):  onStop  01-19 15:16:27.362: D/CARLOZ - oneActivity3(28202):  onDestory  //返回oneActivity  01-19 15:16:27.272: D/CARLOZ -  twoActivity(28202):  onPause  01-19 15:16:27.272: D/CARLOZ -  oneActivity(28202):  onRestart  01-19 15:16:27.322: D/CARLOZ -  oneActivity3(28202): onStart  01-19 15:16:27.342: D/CARLOZ -  oneActivity3(28202): onResume  01-19 15:16:27.352: D/CARLOZ - twoActivity3(28202):  onStop  01-19 15:16:27.362: D/CARLOZ - twoActivity3(28202):  onDestory  //按HOME键退出应用程序  01-19 15:16:55.372: D/CARLOZ - oneActivity(28202):  onPause  01-19 15:16:55.942: D/CARLOZ - oneActivity(28202):  onStop  01-19 15:16:55.952: D/CARLOZ - Application(28202):  onTrimMemory  //回收内存  //重新打开oneActivity  01-19 15:17:20.962: D/CARLOZ - oneActivity(28202): onRestart  01-19 15:17:20.962: D/CARLOZ - oneActivity(28202): onStart  01-19 15:17:20.962: D/CARLOZ - oneActivity(28202): onResume  //按MENU键启动Recent TASK最近任务  01-19 15:17:28.972: D/CARLOZ - oneActivity(28202): onPause  01-19 15:17:28.992: D/CARLOZ - oneActivity(28202): onStop  01-19 15:17:29.022: D/CARLOZ - Application(28202): onTrimMemory //回收内存  //彻底关闭应用程序  01-19 15:17:31.542: D/CARLOZ - oneActivity(28202): onDestroy

四、共享数据


*新建一个MyApplication类继承Application。封装一个自动进行拆装箱。
public class MyApplication extends Application {        private String str = "大家一起享用这个蛋糕";    public String getStr() {        return str;    }    public void setStr(String str) {        this.str = str;    }}
*然后在Activity或其他组件中,调用Activity.getApplication方法或Context.getApplicationContext来获得一个application对象。 在oneActivity中:
 textview.setText("共享数据one:" + application.getStr());
 application.setStr("oneActivity已经吃了一口");
在twoActivity中:
 textview.setText("共享数据two:" + application.getStr());
结果显示:
共享数据one:大家一起享用这个蛋糕共享数据two:oneActivity已经吃了一口





更多相关文章

  1. Android(安卓)Wifi模块分析(三)
  2. Android中dispatchDraw分析
  3. 关于Android(安卓)Studio3.2新建项目Android(安卓)resource link
  4. Android(安卓)- Manifest 文件 详解
  5. Android四大基本组件介绍与生命周期
  6. Android之应用程序基础
  7. Android四大组件的理解
  8. Android(安卓)Service AIDL
  9. Android官方入门文档[1]创建一个Android项目

随机推荐

  1. android获取各种系统路径的方法
  2. 基于Android官方DrawerLayout实现抽屉导
  3. 系出名门Android(7) - 控件(View)之ZoomC
  4. ubuntu 14.04 adb 配置及使用
  5. Android(安卓)keystore 调试
  6. Android自动读取短信验证码
  7. Android(安卓)编程下 Touch 事件的分发和
  8. Android修行之路——Android程序设计基础
  9. Android中使用httpclient等小结
  10. Android(安卓)7.0 自动安装APK及拍照崩溃