수 Activity.getIntent()
도 null
을 반환 할 수 있습니까?Activity.getIntent()가 null을 반환 할 수 있습니까?
설명서에이 문제가 언급되어 있지 않으므로 역 참조하기 전에 null
값에 대한 getIntent()
의 결과를 확인해야하는지 궁금합니다.
수 Activity.getIntent()
도 null
을 반환 할 수 있습니까?Activity.getIntent()가 null을 반환 할 수 있습니까?
설명서에이 문제가 언급되어 있지 않으므로 역 참조하기 전에 null
값에 대한 getIntent()
의 결과를 확인해야하는지 궁금합니다.
네, , 수 있지만 두 경우 :
활동 생성자에서 : 내부 attach
방법에 설정
의도, 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;
}
따라서 intent는 항상 생성자에서 null입니다.
setIntent (널) 후 :
그것은 setIntent()
와 활동의 외부에서 의도를 변경할 수 있습니다.
다른 모든 경우에는 그렇지 못합니다.
응용 프로그램이 메모리에있는 동안 시장에서 업데이트되고 업데이트 후에 다시 시작된 경우 null이 될 수 있습니다. 아마도 심지어 Studio 또는 .apk 파일을 사용하여 수동으로 업데이트하는 경우에도 동일한 효과가 나타납니다. 확실하지, 미안.
Google Dev 콘솔에서 애플리케이션을 한 번 업데이트하고 getIntent()를 호출하여 여러 가지 NPE를 Crashlitics에서 여러 행에 추가했습니다. 모든 스크린에서, getIntent(). getExtra() onCreate 또는 나중에 lifeCycle을 사용했습니다.
그래서 ... 추한 것처럼 보이지만 충돌을 피하기 위해 int 값이 null 인 경우 Finish()를 호출하는 getIntent와 대부분의 시간에 NULL 값을 항상 확인해야합니다. 그러나 당신은 목적을 위해 다른 논리를 만들 수 있습니다.
샘플 앱으로 증명할 수 있습니까? 나는 그것을 재현하려했지만 성공하지 못했습니다. – g4s8
"Intent"가 관여하지 않고도 정상적인 수명주기에서 "Activity"가 실행될 수 있습니까? – Armand
'getIntent'는 null을 반환하지 않습니다. Activity를 시작하는 데 사용한 객체입니다. – Blackbelt
null을 반환 할 수 있지만, 'Activity'에서 null로 설정 한 경우에만 null입니다. –