Maison > Questions et réponses > le corps du texte
通过getIntent()
获得的Intent
用于开启Activity
(Activity
开启本身)时,观察发现Activity
不会走onDestroy()
方法.
那么以下两种获得Intent的方法在开启Activity时,有什么本质区别吗?
Intent intent1 = getIntent(); //此方法在MainActivity中调用
Intent intent2 = new Intent(MainActivity.this, MainActivity.class);
如果利用intent2
去startActivity()
那么会开启一个全新的Activity
如果用intent1
则不会.
看了下源码,但是由于本人太水,没有找到判断用于开启Activity
的Intent
是否是attach()
在Activity
上的这个逻辑,所以比较困惑,望大神解答.
怪我咯2017-04-18 09:06:59
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é