简单介绍Android开发中的Activity控件的基本概念

2019-12-10 19:46:10丽君

非用户行为把activity不可见的时候,例如电话忽然来了==

/**
   * 重新创建恢复缓存的数据
   */
   @Override
   protected void onRestoreInstanceState(Bundle savedInstanceState) {
       Log.i("onRestoreInstanceState",savedInstanceState.getString("name"));
       super.onRestoreInstanceState(savedInstanceState);
   }
   /**
   * 被摧毁前保存缓存的一些数据
   */
   @Override
   protected void onSaveInstanceState(Bundle outState) {
       outState.putString("name", "简明现代魔法");
       super.onSaveInstanceState(outState);
   }

在android里,有4种activity的启动模式,分别为:

  1.   ·standard: 标准模式,一调用startActivity()方法就会产生一个新的实例。
  2.   ·singleTop: 如果已经有一个实例位于Activity栈的顶部时,就不产生新的实例,而只是调用Activity中的newInstance()方法。如果不位于栈顶,会产生一个新的实例。
  3.   ·singleTask: 会在一个新的task中产生这个实例,以后每次调用都会使用这个,不会去产生新的实例了。
  4.   ·singleInstance: 这个跟singleTask基本上是一样,只有一个区别:在这个模式下的Activity实例所处的task中,只能有这个activity实例,不能有其他的实例。

  这些启动模式可以在功能清单文件AndroidManifest.xml中进行设置,中的launchMode属性。

  相关的代码中也有一些标志可以使用,比如我们想只启用一个实例,则可以使用 Intent.FLAG_ACTIVITY_REORDER_TO_FRONT 标志,这个标志表示:如果这个activity已经启动了,就不产生新的activity,而只是把这个activity实例加到栈顶来就可以了。

  Intent intent = new Intent(ReorderFour.this, ReorderTwo.class);

  intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

  startActivity(intent);