标签:progressdialog android-asynctask java android
我在显示带有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().
标签:progressdialog,android-asynctask,java,android 来源: https://codeday.me/bug/20191118/2027970.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。