Java-进度对话框android泄漏Windows错误

Java-进度对话框android泄漏Windows错误,第1张

概述我在显示带有AsyncTask的进度对话框时遇到问题:Activityhasleakedwindowcom.android.internal.policy.PhoneWindow$DecorView{8cee959V.E......R......D0,0-1026,252}thatwasoriginallyaddedhere这是我的异步任务:publicclassMyClientTaskextendsAsyncTask<Voi

我在显示带有AsyncTask的进度对话框时遇到问题:

Activity has leaked window com.androID.internal.policy.PhoneWindow$DecorVIEw{8cee959 V.E...... R......D 0,0-1026,252} that was originally added here

这是我的异步任务:

public class MyClIEntTask extends AsyncTask<VoID, VoID, VoID> {    private ProgressDialog progressDialog = null;    private Context mContext;    MyClIEntTask(Context mContext) {        this.mContext = mContext;    }    @OverrIDe    protected voID onPreExecute() {        super.onPreExecute();        progressDialog = new ProgressDialog(mContext);        progressDialog.setMessage("Working ...");        progressDialog.setIndeterminate(false);        progressDialog.setCancelable(false);        progressDialog.show();    }    @OverrIDe    protected VoID doInBackground(VoID... arg0) {        try {            wait(5000);        } catch (InterruptedException e) {            e.printstacktrace();        }        return null;    }    @OverrIDe    protected voID onPostExecute(VoID result) {        super.onPostExecute(result);        if (progressDialog != null) {            progressDialog.dismiss();            progressDialog = null;        }    }}

这是我的活动:

public class ConnectionActivity extends Activity {    final private Context mContext = this;    private button buttonConnect;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R .layout.activity_socketconnection);        buttonConnect = (button) findVIEwByID(R.ID.buttonConnect);        buttonConnect.setonClickListener(getConnectOncOnClickListener());    }    private OnClickListener getConnectOncOnClickListener() {        return new OnClickListener() {            @OverrIDe            public voID onClick(VIEw v) {                MyClIEntTask myClIEntTask = new MyClIEntTask(mContext);                try {                        myClIEntTask.execute();                        myClIEntTask.get();                } catch (InterruptedException e) {                    e.printstacktrace();                } catch (ExecutionException e) {                    e.printstacktrace();                }            }        };    }}

我搜索了解决方案,但仍然无法正常工作

解决方法:

一些提示:

>在您的活动中保留对ProgressDialog的引用,并添加公共方法来显示/隐藏它;
>使用WeakReference< Context>在您的AsyncTask中,让垃圾收集器完成工作;
>摆脱阻塞UI线程的myClIEntTask.get().

总结

以上是内存溢出为你收集整理的Java-进度对话框android泄漏Windows错误全部内容,希望文章能够帮你解决Java-进度对话框android泄漏Windows错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1120796.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存