android - finishAffinity() 后的 NPE
问题描述
我有这个代码:
Api.logout(() -> {
//Do some work cleaning up
ActivityCompat.finishAffinity(this)
startActivity(new Intent(this, SignInActivity.class))
})
此代码不断抛出异常:
java.lang.NullPointerException: Attempt to read from field 'com.android.server.am.TaskRecord com.android.server.am.ActivityRecord.task' on a null object reference
at android.os.Parcel.readException(Parcel.java:1546)
at android.os.Parcel.readException(Parcel.java:1493)
at android.app.ActivityManagerProxy.finishActivityAffinity(ActivityManagerNative.java:2709)
at android.app.Activity.finishAffinity(Activity.java:4717)
at android.support.v4.app.ActivityCompat.finishAffinity(ActivityCompat.java:287)
at my.app.api.Api.lambda$logout$0(Api.java:43)
at my.app.MainActivity.performLogOut(MainActivity.java:90)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5261)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:939)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:734)
看起来这个错误在于ActivityCompat.finishAffinity
方法。
是什么导致了这个错误以及如何修复它?
解决方案
首先,调用 Intent 然后完成 Activity,否则调用 Intent 时 Activity Context 将为空。
startActivity(new Intent(this, SignInActivity.class))
ActivityCompat.finishAffinity(this)
推荐阅读
- javascript - 为什么此功能不在每个画布上粘贴一个图像?
- html - 尝试重新创建此模板,但菜单无法正常工作?
- java - 云中的 Spring Boot API 不如本地快
- java - 如何使用 Mockito 模拟局部变量?
- json - 无法访问键中包含连字符或数字的 JSON 属性 - Rollup 和 TypeScript
- amazon-ec2 - 如何在 ALB 设置下获取 Cognito 刷新令牌?
- reactjs - React App.js 在进行更改时不会更新,但其他组件会更新
- python - 为什么程序未运行时访问被拒绝?
- r - 根据条件更新数据帧(循环)R
- javascript - 未捕获的类型错误:无法读取图像滑块未定义的属性“样式”