• android home按键和SingleTask的问题


    1、先说现象

    现在有三个activity:FirstActivity、SecondActivity和ThirdActivity,并且FirstActivity为启动入口

    即FirstActivity在AndroidManifest.xml中配置有

    <intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

    一、给FirstActivity添加LaunchMode="SingleTask"

    (此时SecondActivity和ThirdActivity加不加LaunchMode="SingleTask"效果一样)

    进入应用到ThirdActivity或者SecondActivity然后按HOME键

    ①在桌面上点击应用图标进入应用会发现还是进入了FirstActivity,并且此时的SecondActivity和ThirdActivity

       分别调用了onDestory()方法。

    ②长按HOME键进入应用没有进入FirstActivity,而是打开了应用最后一次打开的activity,并且此时调用了最

      后一次打开的activity的onRestart->onStart->onResume方法。

    ③在FirstActivity的onCreate方法中添加延迟finish的处理,比如

    new Handler().postDelayed(new Runnable()
    {
    public void run()
    {
    finish();
    }
    }, 1500);

    之后在桌面上点击应用图标进入应用会发现还是进入了FirstActivity,但是这是一个新的实例,之前的已经finish掉了,所以此时的SecondActivity和ThirdActivity

    并不会调用onDestory()方法。

    二、去掉FirstActivity的LaunchMode="SingleTask"

    (此时SecondActivity和ThirdActivity加不加LaunchMode="SingleTask"效果一样)

    在任何一个界面按HOME键,然后不管是从桌面打开应用还是长按HOME键打开应用都是

    进入到应用最后一次打开的activity。

    2、具体原理有待进一步研究,有明白原理的童鞋请支招,不胜感激!

  • 相关阅读:
    java.lang.String 的 + 号操作到底做了什么事情?
    我的【Java】面试日记
    ReentrantLock源码学习总结 (二)
    ReentrantLock源码学习总结 (一)
    【Dubbo】带着问题看源码:什么是SPI机制?Dubbo是如何实现的?
    假如 Redis Cluster 模式用在 T-io 上
    Win10下安装tensorflow详细过程
    Python 3.7 使用pyhive (坑)
    ARIMA
    AttributeError: 'Series' object has no attribute 'ix'
  • 原文地址:https://www.cnblogs.com/yushilong/p/3956202.html
Copyright © 2020-2023  润新知