通过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
上的这个逻辑,所以比较困惑,望大神解答.
看题主描述的内容, 以及Activity的行为, 对Activity的定义可能如下:
如果是这样定义, 而且又是直接
startActivity(getIntent())
, 那肯定是不行的, 因为系统默认是以Launcher(应用入口)的行为来创建Intent的, 并且在已经启动应用的情况下, 是不会任何反应的(若已经切换到后台, 那么调用时就会将该应用切换回前台). 而startActivity(new Intent(...))
则没有上述问题.startActivity(getIntent())
, 那肯定是不行的, 因为系统默认是以Launcher(应用入口)的行为来创建Intent的, 并且在已经启动应用的情况下, 是不会任何反应的(若已经切换到后台, 那么调用时就会将该应用切换回前台). 而startActivity(new Intent(...))
则没有上述问题.另外,
另外,onDestroy()
并不是启动新Activity
就会被调用的, 除非声明了android:noHistory="true"
或者FLAG_ACTIVITY_CLEAR_TOP
/FLAG_ACTIVITY_CLEAR_TASK
onDestroy()
并不是启动新Activity
就会被调用的, 除非声明了android:noHistory="true"
或者FLAG_ACTIVITY_CLEAR_TOP
/FLAG_ACTIVITY_CLEAR_TASK
之类的flag.🎜