Android中的Application简

来源:互联网 发布:mac 升级不到10.10 编辑:程序博客网 时间:2024/06/13 23:35

Application 类

文档里如是说:
Base class for those who need to maintain global application state. You can provide your own implementation by specifying its name in your AndroidManifest.xml’s tag, which will cause that class to be instantiated for you when the process for your application/package is created.

There is normally no need to subclass Application. In most situation, 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), the function to retrieve it can be given a Context which internally uses Context.getApplicationContext() when first constructing the singleton.


Application是用来维护应用程序全局状态。你可以提供自己的实现,并在 AndroidManifest.xml文件的 标签中指出他的名字,这将导致在创建应用程序时去实例化你自己的 Application 类。(它是一个Base class,要不然你的context可以get到它,恩,貌似是)
Android系统会为每个程序运行时创建一个Application类的对象且仅创建一个,所以Application可以说是单例 (Singleton)模式的一个类。且 Application 对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。因为它是全局唯一的,所以在不同的Activity,Service中获得的对象都是同一个对象。
所以通过 Application 来进行一些:数据传递、数据共享、数据缓存等操作(不建议做数据的缓存)。
以上为文档说明。
由Manifest.xml的结构可知四大组件都是application的子节点,真正的Android入口点是application的main。

application的生命周期

public class TestApplication extends Application {    /**     * 在应用程序创建的时候被调用,创建和实例化程序状态变量或共享资源。     * 可得到 Application 的单例。     */    @Override    public void onCreate() {        super.onCreate();    }    /**     * 当终止应用程序对象时调用     * 不保证一定被调用(当被内核终止以便为其他应用程序释放资源,那么将不会提醒,并且不调用该方法而直接终止进程)     */    @Override    public void onTerminate() {        super.onTerminate();    }    /**     * 与 Activity 不同,配置改变时,应用程序对象不会被终止和重启。如果应用程序使用的值依赖于特定的配置,则重写这个方法来加载这些值,或者在应用程序级处理配置值的改变。     */    @Override    public void onConfigurationChanged(Configuration newConfig) {        super.onConfigurationChanged(newConfig);    }    /**     * 当系统资源匮乏的时候,我们可以在这里可以释放额外的内存, 这个方法一般只会在后台进程已经结束,但前台应用程序还是缺少内存时调用。可以重写这个方法来清空缓存或者释放不必要的资源。     */    @Override    public void onLowMemory() {        super.onLowMemory();    }    /**     * 当运行时决定当前应用程序应该减少其内存开销时(通常在进入后台运行的时候)调用,包含一个 level 参数,用于提供请求的上下文。     * @param level     */    @Override    public void onTrimMemory(int level) {        super.onTrimMemory(level);    }}

application类里面有一个借口:ActivityLifecycleCallbacks,顾名思义activity的生命周期的callback
如果要做activity管理,可以去实现它。

0 0
原创粉丝点击