初识Application

一.Application是什么

一个全局单例模式的类,用于维护应用的状态。

  • 当运行项目时优先于其他类运行。可以写一个自己的Application类,需要在清单文件Application标签中注册,添加name属性。
  • 可以通过Context.getApplicationContext()方法获得全局上下文对象。
  • 整个过程中生命周期最长

二.Application的应用

1.共享数据、传递数据、存数据

Application

public class MyApplication extends Application {
    public String name;
}
注意:清单文件中要加name属性

ActivityA

 public void openActivity(View view) {
        MyApplication application = (MyApplication) getApplication();
        application.name = "ricky";
        startActivity(new Intent(this,Main2Activity.class));
    }

ActivityB

@Override
    MyApplication myApplication;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        //方式一
        myApplication = (MyApplication)getApplication();
        Log.d("amy",myApplication.name);

        //方式二
        myApplication = (MyApplication) getApplicationContext();
        Log.d("amy",myApplication.name);
    }

三.Application生命周期

public class App extends Application {

	private static final String TAG = "amy";

    @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);
    }
}

四.BaseActivity

public abstract class BaseActivity extends AppCompatActivity{

    protected abstract int layoutId();
    protected abstract void initView();
    protected abstract void initData();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(layoutId());
        initView();
        initData();
    }
}

五.BaseApplication

public class MyApplication extends Application {
    private static MyApplication application;
    private static Context context;

    @Override
    public void onCreate() {
        super.onCreate();
        application = this;
        context = getApplicationContext();
    }
}

六.什么是上下文

在这里插入图片描述

七.上下文不同使用场景

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值