Arm*_*and 47 java android android-intent
能Activity.getIntent()
回来null
吗?
该文件没有提到这种可能性,所以我想知道如果我要检查的结果getIntent()
为null
解引用前值.
Kir*_*ill 57
是的,它可以,但仅限于两种情况:
在activity构造函数中:
在内部attach
方法中设置Intent ,从Instrumentation
类调用:
public Activity newActivity(Class<?> clazz, Context context,
IBinder token, Application application, Intent intent, ActivityInfo info,
CharSequence title, Activity parent, String id,
Object lastNonConfigurationInstance) throws InstantiationException,
IllegalAccessException {
Activity activity = (Activity)clazz.newInstance();
ActivityThread aThread = null;
activity.attach(context, aThread, this, token, 0, application, intent,
info, title, parent, id,
(Activity.NonConfigurationInstances)lastNonConfigurationInstance,
new Configuration(), null, null);
return activity;
}
Run Code Online (Sandbox Code Playgroud)
因此,构造函数中的intent始终为null.
在setIntent(null)之后:
可以从活动外部改变意图setIntent()
.
在所有其他情况下,它不能.
Rel*_*oul 15
当您的应用程序在内存中更新并且在更新后再次重新启动时,它可以为null.甚至如果您将通过Studio或.apk文件手动更新,也会产生相同的效果.不确定,抱歉.
我曾经在Google Dev控制台中更新了应用程序,并在调用getIntent()的行中在Crashlitics中获得了几个不同的NPE.它发生在所有屏幕上,我使用getIntent().getExtra()onCreate,甚至更晚的lifeCycle.
所以...它看起来很难看,但是为了避免崩溃,我需要在调用getIntent时检查NULL值的意图,并且如果intent为null,则大多数时候我调用Finish().但是你可以为你制定其他逻辑,ofc.
归档时间: |
|
查看次数: |
11980 次 |
最近记录: |