Updater: remove dialog before showing a new one and when detaching
2020-04-03 16:18:18.286 28742-28742/org.lineageos.updater E/WindowManager: android.view.WindowLeaked: Activity org.lineageos.updater.UpdatesActivity has leaked window DecorView@5dd12b3[UpdatesActivity] that was originally added here at android.view.ViewRootImpl.<init>(ViewRootImpl.java:621) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:377) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:96) at android.app.Dialog.show(Dialog.java:342) at androidx.appcompat.app.AlertDialog$Builder.show(AlertDialog.java:1009) at org.lineageos.updater.UpdatesListAdapter.showInfoDialog(UpdatesListAdapter.java:552) at org.lineageos.updater.UpdatesListAdapter.lambda$setButtonAction$5$UpdatesListAdapter(UpdatesListAdapter.java:375) at org.lineageos.updater.-$$Lambda$UpdatesListAdapter$xtQzmsol8pO3BlYZkbKcb5gVAq4.onClick(Unknown Source:2) at org.lineageos.updater.UpdatesListAdapter.lambda$setButtonAction$9(UpdatesListAdapter.java:408) at org.lineageos.updater.-$$Lambda$UpdatesListAdapter$M4hRQyNgJseuHrw6EfkhK_yrGK8.onClick(Unknown Source:2) at android.view.View.performClick(View.java:7259) at android.view.View.performClickInternal(View.java:7236) at android.view.View.access$3600(View.java:801) at android.view.View$PerformClick.run(View.java:27896) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7397) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:935) Change-Id: I7877b02b8526c7c12331a660a7ac934d02656e6f Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
This commit is contained in:
@@ -78,6 +78,8 @@ public class UpdatesListAdapter extends RecyclerView.Adapter<UpdatesListAdapter.
|
|||||||
private UpdaterController mUpdaterController;
|
private UpdaterController mUpdaterController;
|
||||||
private UpdatesListActivity mActivity;
|
private UpdatesListActivity mActivity;
|
||||||
|
|
||||||
|
private AlertDialog infoDialog;
|
||||||
|
|
||||||
private enum Action {
|
private enum Action {
|
||||||
DOWNLOAD,
|
DOWNLOAD,
|
||||||
PAUSE,
|
PAUSE,
|
||||||
@@ -127,6 +129,15 @@ public class UpdatesListAdapter extends RecyclerView.Adapter<UpdatesListAdapter.
|
|||||||
return new ViewHolder(view);
|
return new ViewHolder(view);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onViewDetachedFromWindow(ViewHolder holder) {
|
||||||
|
super.onViewDetachedFromWindow(holder);
|
||||||
|
|
||||||
|
if (infoDialog != null) {
|
||||||
|
infoDialog.dismiss();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void setUpdaterController(UpdaterController updaterController) {
|
public void setUpdaterController(UpdaterController updaterController) {
|
||||||
mUpdaterController = updaterController;
|
mUpdaterController = updaterController;
|
||||||
notifyDataSetChanged();
|
notifyDataSetChanged();
|
||||||
@@ -545,12 +556,15 @@ public class UpdatesListAdapter extends RecyclerView.Adapter<UpdatesListAdapter.
|
|||||||
Utils.getUpgradeBlockedURL(mActivity));
|
Utils.getUpgradeBlockedURL(mActivity));
|
||||||
SpannableString message = new SpannableString(messageString);
|
SpannableString message = new SpannableString(messageString);
|
||||||
Linkify.addLinks(message, Linkify.WEB_URLS);
|
Linkify.addLinks(message, Linkify.WEB_URLS);
|
||||||
AlertDialog dialog = new AlertDialog.Builder(mActivity)
|
if (infoDialog != null) {
|
||||||
|
infoDialog.dismiss();
|
||||||
|
}
|
||||||
|
infoDialog = new AlertDialog.Builder(mActivity)
|
||||||
.setTitle(R.string.blocked_update_dialog_title)
|
.setTitle(R.string.blocked_update_dialog_title)
|
||||||
.setPositiveButton(android.R.string.ok, null)
|
.setPositiveButton(android.R.string.ok, null)
|
||||||
.setMessage(message)
|
.setMessage(message)
|
||||||
.show();
|
.show();
|
||||||
TextView textView = (TextView) dialog.findViewById(android.R.id.message);
|
TextView textView = (TextView) infoDialog.findViewById(android.R.id.message);
|
||||||
textView.setMovementMethod(LinkMovementMethod.getInstance());
|
textView.setMovementMethod(LinkMovementMethod.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user