Application 类 简介

Application 简介

每次程序运行时,程序的Application 类都是保持实例化。与Activity不同;配置改变并不会导致程序重启。通过扩展Application类,可以完成以下工作:

1.Android 运行时广播的应用程序级事件(如低内存)作出响应。

2.在应用组件之间传递对象。

3.管理和维护多个应用程序组件使用的资源。

其中后两项工作可以使用一个单态类完成,当Manifest 中注册了一个Application实现后,他会在创建应用程序进程的时候得到实例化。因此,Application的实现在本质上上是单态的,并且应该作为单态进行实现,以便对其方法和成员变量的访问。

l  扩展和使用Application

Application 类的框架:

public class MyApplication extends Application{
    private static MyApplication singleton;
//返回应用程序实例
    public static MyApplication getInstance(){
        return singleton;
    }
    @Override
    public void onCreate() {
        super.onCreate();
        singleton=this;
    }
}


注意:必须在Manifest文件中注册:

 

<application
        android:name="com.example.persontest.MyApplication"
        android:allowBackup="true"
[……………………Manifest nodes……………………]        
 </application>


虽然对于在松耦合的应用程序组件之间传递对象,以及维护应用程序状态或者共享资源,这种方法特别有效;但是一般来说,创建自己的静态单态类比为特殊用途扩展Application类更好一些,除非你还要处理一下描述的生命周期事件。

l  重写应用程序的生命周期事件:

Application类为应用程序的创建和终止,低可用内存和配置改变提供了事件处理程序。

通过重写以下方法,可以为上述几种情况实现自己的应用程序行为:

1.onCreate: 在创建应用程序是调用。可以重写这个方法来实例化应用程序单态,以及创建和实例化任何应用程序状态变量或者公共资源。

2.onLowMemory 当系统资源匮乏时,具有良好行为的程序可以释放额外的内存。这个方法一般会在后台进已经终止,但是前台应用程序仍然缺少内存时调用。可以重写这个处理程序来清空缓存或者释放不必要的资源

3.onTrimMemory:作为onLowMemory的一个特定于应用程序的替代选择,在Android 4.0Api Level 13)引入(但是我在官网上看的是level 14)。当(Android Runtime )运行时决定当前应用程序应该尝试减少内存开销时(通常它进入后台是)调用。它包含一个level参数,用于提供请求的上下文。

4.onConfigurationChanged:与Activity不同,在配置改变时,应用程序对象不会被终止或者重启。如果应用程序使用的值依赖于特定的配置,则重写这个方法来重写加载这些值,或者在应用程序级别处理配置改变。

必须在重写这些方法时调用超类的时间处理程序。

public class MyApplication extends Application {
    private static MyApplication singleton;
    public static MyApplication getInstance() {
        if (singleton == null) {
            singleton = new MyApplication();
        }
        return singleton;
    }
    @Override
    public void onCreate() {
        super.onCreate();
        singleton = this;
    }
    @Override
    public void onLowMemory() {
        super.onLowMemory();
    }
    @Override
    public void onTrimMemory(int level) {
        super.onTrimMemory(level);
    }
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
    }
}


转载于:https://my.oschina.net/litengit/blog/354288

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值