Android 意向书有效期有多长

Android 意向书有效期有多长,android,android-intent,android-activity,Android,Android Intent,Android Activity,我想知道活动中的getIntent()可以使用多长时间(不返回null)。假设我从我的活动A开始活动B,并在意图中传递一些额外的数据 在活动B中,我将从activities onCreate()方法中的intent读取额外的数据。 到现在为止,一直都还不错。但是getIntent()有多长时间可用?我的意思是,如果用户正在显示活动B,但切换到另一个应用程序(即通过使用多任务按钮),并且在数小时后,用户再次单击多任务按钮(活动可能在此期间被销毁),并再次打开活动B。因此,将调用活动BonCreat

我想知道活动中的getIntent()可以使用多长时间(不返回null)。假设我从我的活动A开始活动B,并在意图中传递一些额外的数据

在活动B中,我将从activities onCreate()方法中的intent读取额外的数据。 到现在为止,一直都还不错。但是
getIntent()
有多长时间可用?我的意思是,如果用户正在显示活动B,但切换到另一个应用程序(即通过使用多任务按钮),并且在数小时后,用户再次单击多任务按钮(活动可能在此期间被销毁),并再次打开活动B。因此,将调用活动B
onCreate()
,以重新实例化活动B。getIntent()现在是否仍然返回带有额外值的原始意图,或者我是否必须在活动
onSaveInstanceState()
中保存意图额外值,并在
onCreate(捆绑状态)
中使用捆绑包

getIntent()现在是否仍然返回带有额外值的原始意图


从技术上讲,它返回
意图的副本。一般来说,它应该与原始的
Intent
相同,包括所有额外内容。

来自Android文档,
getIntent()
返回

Return the intent that started this activity.  
但是,在很多情况下,getIntent为null或extra为null。检查这个,然后。特别是在设备旋转或按下后退键时

但正如它看起来的那样,文件却表明了相反的观点。为了安全起见,我建议你做以下事情

if (getIntent() != null && getIntent().getExtras() != null){

}

而且,您的活动代码应该准备好处理
getIntent
为空的场景。

所以android会以某种方式保存意图,并在需要时恢复它,对吗?@sockeqwe:Yes。基本上,如果用户导航回活动的特定实例(例如,通过最近的任务列表),Android将返回最初用于创建该活动实例原始副本的
意图的副本。