Android知识杂记(四)

时间:2021-12-01 16:12:03

1、完整退出activity的设计思路
  1.1 封装一个基础activity类
  public abstract class RootActivity extends FragmentActivity{
  1.2 定义一个广播监听
  private IntentFilter filter = new IntentFilter(FINISH_ACTION);
  private BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
    finish();
    }
  };
  1.3 在oncreate中注册并在onDestroy中注销
    registerReceiver(receiver, filter);
    unregisterReceiver(receiver);
  1.4 使用时发送广播
    Intent intent = new Intent();
    intent.setAction(RootActivity.FINISH_ACTION);
    ctx.sendBroadcast(intent);

2、Android 强制退出应用
  android.os.Process.killProcess(android.os.Process.myPid());//退出当前的进程
  System.exit(0);//退出JVM,清除资源

  备注:若只有killprocess,而无System.exit 则后台可能还有缓存的进程

  System.exit(0),System.exit(1)的区别:
  参数0和1代表退出的状态,0表示正常退出,1表示异常退出(只要是非0的都为异常退出),该参数只是通知操作系统该程序是否是正常退出。

3、setCanceledOnTouchOutside(false) 设置dialog点击屏幕不消失;

4、关于Context
  Context是个抽象类, Activity、Service、Application都是Context的子类。
  Activity\Service\Application都是系统提供的组件,无法主动new,所以要一个Context来管理上下文关系;