zoukankan      html  css  js  c++  java
  • 长按HOME键的实验【原创】

    • 实验内容:

      在不同的launch模式下,点击‘home’后,再长按Home后的activity的执行顺序是不一样的。

    实验代码:

    public class TestActivity extends Activity {
    private String TAG = "TestActivity";

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Log.d(TAG, "onCreate"+ this.toString());
    }

    @Override
    protected void onResume() {
    super.onResume();
    Log.d(TAG, "onResume"+ this.toString());
    }

    @Override
    protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    Log.d(TAG, "onNewIntent"+ this.toString());
    }

    public void a(View view) {
    startActivity(new Intent(TestActivity.this, TestActivity.class));
    }
    }
    • 不同情况下实验结果:

      1。 TestActivity的launchMode的值定义为“standard”,或者不填(默认就为standard)

    分析: 第一条线: 启动程序执行OnCreate和OnResume。

        第二条线: 点击按钮,执行a方法。 第一个TestActivity执行onPause,并启动新的TestActivity,执行OnCreate和OnResume。

        第三条线:点击‘home’键,执行OnPause。

        第四条线:长按“HOME”,执行OnResume。且activity为之前关闭的activity。

      2。 TestActivty的launchMode的值定义为“singleTop、singleTask,singleInstance”。下图为singleTask实例:

    分析: 第一条线: 启动程序执行OnCreate和OnResume。

        第二条线:点击按钮,执行a方法。 第一个TestActivity执行onPause,并启动新的TestActivity,由于设置了launchMode,在设置的当前情况下不需要重新创建新的activity。便执行onNewIntent和OnResume。

        第三条线:点击‘home’键,执行OnPause。

        第四条线:长按“HOME”,执行onNewIntent和OnResume。且activity为之前关闭的activity。    

    • 实验结论
    1。OnNewIntent方法是在创建目标Activity已经存在,无需再次创建的时候调用,代替了OnCreate方法。
    2。当activity的launchMode的模式在非standard模式下,长按HOME键,是调用onNewIntent()-》OnResume()
    PS:
            Intent intent = new Intent(TestActivity.this, TestActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
    即使代码的Intent中加入了FLAG_ACTIVITY_NEW_TASK也不会影响前面的结论。 (即使加入了FLAG_ACTIVITY_NEW_TASK参数,仍然是在standard模式下调用onCreate方法。在非standard模式下,满足情况就只调用onNewIntent);
  • 相关阅读:
    8.移动和重命名文件
    7.复制文件和目录
    22.变基
    21.拉取&删除远程分支
    程序员必备课程——网络编程入门
    正则表达式——Java程序员懂你
    编程语言的基础——搞定JavaIO
    需加装饰——装饰模式
    结合提供者模式解析Jenkins源码国际化的实现
    算法族的集中管理——策略模式
  • 原文地址:https://www.cnblogs.com/xitang/p/2196033.html
Copyright © 2011-2022 走看看