Blankj / AndroidUtilCode

:fire: Android developers should collect the following utils(updating).
https://blankj.com/2016/07/31/android-utils-code/
Apache License 2.0
33.24k stars 10.67k forks source link

Android13 未开启通知权限 ToastUtils内存泄漏 #1686

Open easytobreakdown opened 2 years ago

easytobreakdown commented 2 years ago

描述 Bug

简洁地描述下 Bug。

相关代码

Activity页面:
ToastUtils.showShort("保存成功");
finish();

异常堆栈

WindowManager: android.view.WindowLeaked: Activity xxx.EditAccountsActivity has leaked window android.widget.ImageView{a2af096 V.ED..... ........ 0,0-244,119} that was originally added here at android.view.ViewRootImpl.(ViewRootImpl.java:900) at android.view.ViewRootImpl.(ViewRootImpl.java:884) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:386) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148) at com.blankj.utilcode.util.ToastUtils$WindowManagerToast.show(ToastUtils.java:630) at com.blankj.utilcode.util.ToastUtils$ActivityToast.showWithActivityWindow(ToastUtils.java:739) at com.blankj.utilcode.util.ToastUtils$ActivityToast.show(ToastUtils.java:680) at com.blankj.utilcode.util.ToastUtils$2.run(ToastUtils.java:494) at com.blankj.utilcode.util.ThreadUtils.runOnUiThread(ThreadUtils.java:70) at com.blankj.utilcode.util.UtilsBridge.runOnUiThread(UtilsBridge.java:554) at com.blankj.utilcode.util.ToastUtils.show(ToastUtils.java:483) at com.blankj.utilcode.util.ToastUtils.show(ToastUtils.java:472) at com.blankj.utilcode.util.ToastUtils.showShort(ToastUtils.java:383) at EditAccountsActivity.lambda$updateOrCreateAccounts$11$EditAccountsActivity(EditAccountsActivity.java:1048) at xxx.activity.-$$Lambda$EditAccountsActivity$gdHE3JIS4gK530Egm59XoHd5szA.run(Unknown Source:4) at xxx.LoadingActivityTask$LoadingRunnable.run(LoadingActivityTask.java:35) at android.os.Handler.handleCallback(Handler.java:942) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.app.ActivityThread.main(ActivityThread.java:7898) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

Andy045 commented 1 year ago

Activity销毁时调用下 ToastUtils.cancel()方法。 可以在BaseActivity.onDestroy() 或者 lifecycle.addObserver() 中通用处理