搜尋

首頁  >  問答  >  主體

android - 通过getIntent()获得的Intent有什么特殊的吗?

通过getIntent()获得的Intent用于开启Activity(Activity开启本身)时,观察发现Activity不会走onDestroy()方法.

那么以下两种获得Intent的方法在开启Activity时,有什么本质区别吗?

如果利用intent2startActivity() 那么会开启一个全新的Activity
如果用intent1 则不会.

看了下源码,但是由于本人太水,没有找到判断用于开启ActivityIntent是否是attach()Activity上的这个逻辑,所以比较困惑,望大神解答.

伊谢尔伦伊谢尔伦2772 天前410

全部回覆(1)我來回復

  • 怪我咯

    怪我咯2017-04-18 09:06:59

    資訊量太少, 題主沒有貼出關鍵代碼: AndroidManifest.xml中對該Activity的聲明部分. 那就只能靠猜的了.

    看題主所描述的內容, 以及Activity的行為, 對Activity的定義可能如下:

    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    

    如果是這樣定義, 而且又是直接startActivity(getIntent()), 那肯定是不行的, 因为系统默认是以Launcher(应用入口)的行为来创建Intent的, 并且在已经启动应用的情况下, 是不会任何反应的(若已经切换到后台, 那么调用时就会将该应用切换回前台). 而startActivity(new Intent(...))則沒有上述問題.

    另外, onDestroy()并不是启动新Activity就会被调用的, 除非声明了android:noHistory="true"或者FLAG_ACTIVITY_CLEAR_TOP/FLAG_ACTIVITY_CLEAR_TASK之類的flag.

    回覆
    0
  • 取消回覆