gpt4 book ai didi

java - 为什么我应该使用 onPrepareDialog 等在 Android 中显示 ProgressDialog?

转载 作者:行者123 更新时间:2023-12-01 05:38:22 24 4
gpt4 key购买 nike

我目前正在使用以下代码在我的 Andorid 应用程序中显示/隐藏 ProgressDialog(从 MyActivity 中调用):

private void startTask() {
new MyTask().execute();
}

private class MyTask extends AsyncTask<A, String, C> {
private ProgressDialog pd;
@Override
protected void onPreExecute() {
super.onPreExecute();
this.pd = ProgressDialog.show(MyActivity.this, "Title", "Message", true, true);
pd.setOnCancelListener(new OnCancelListener() {
public void onCancel(DialogInterface dialog) {
MyTask.this.cancel(true);
}
});

}

@Override
protected void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
this.pd.setMessage(values[0]);
}

@Override
protected void onCancelled() {
super.onCancelled();
Toast.makeText(MyActivity.this, "cancelled", Toast.LENGTH_SHORT).show();
}

@Override
protected void onPostExecute(RequestResult result) {
super.onPostExecute(result);
this.pd.dismiss();
}
}

现在,由于我在 Activity 中阅读了很多关于 onCreateDialog 的内容,我只想知道我的做法是否有任何我没有想到的缺点,或者甚至为什么我应该更喜欢onCreateDialog机制。

最佳答案

[已更新]

这种方法的问题是,如果 Activity 被销毁(例如轮换时),您的 AsyncTask 会将其保留在内存中,从而造成临时内存泄漏。此外,在 Activity 的 onDestroy() 之后尝试访问 ProgressDialog 时,它会导致 IllegalArgumentException。

关于java - 为什么我应该使用 onPrepareDialog 等在 Android 中显示 ProgressDialog?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7783672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com