android - 通过getIntent()获得的Intent有什么特殊的吗?
伊谢尔伦
伊谢尔伦 2017-04-18 09:04:59
0
1
417

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

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

  • Intent intent1 = getIntent(); //此方法在MainActivity中调用

  • Intent intent2 = new Intent(MainActivity.this, MainActivity.class);

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

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

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

répondre à tous(1)
刘奇

La quantité d'informations est trop faible et la personne qui pose la question n'a pas publié le code clé : la partie déclaration de l'activité dans AndroidManifest.xml.

En regardant le contenu décrit par le sujet et le comportement de l'Activité, la définition de l'Activité peut être la suivante :

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

S'il est défini comme ceci, et c'est directement startActivity(getIntent()), cela ne fonctionnera certainement pas, car le système crée par défaut l'intention en fonction du comportement du lanceur (entrée de l'application) et du moment où l'application a été démarré, ce n'est pas possible. Il n'y aura pas de réponse (si elle a été basculée en arrière-plan, l'application reviendra au premier plan lorsqu'elle sera appelée. Cependant, startActivity(new Intent(...)) n'a pas le problème ci-dessus

).

De plus, onDestroy() ne sera pas appelé lors du démarrage d'un nouveau Activity, à moins qu'un drapeau tel que android:noHistory="true" ou FLAG_ACTIVITY_CLEAR_TOP/FLAG_ACTIVITY_CLEAR_TASK soit déclaré

.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal