gpt4 book ai didi

android - ProgressDialog 没有出现

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:17:59 24 4
gpt4 key购买 nike

我的 Activity 中有以下内容,我用它来下载用户的 LoveFilm 队列中的电影,但 ProgressDialog 从未出现。

public class MyListActivity extends Activity {
SharedPreferences prefs;
ProgressDialog m_progressDialog;
Thread listThread;
User user;

private Runnable threadProc_initializeQueue = new Runnable() {
public void run() {
user.fetchQueues();
Queue defaultQueue = user.getDefaultQueue();
defaultQueue.fetchTitles();

m_progressDialog.dismiss();
}
};

/* (non-Javadoc)
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

prefs = getSharedPreferences(getString(R.string.app_name), MODE_PRIVATE);

// Authenticate the user if needs be.
if(!prefs.getBoolean("isAuthenticated", false)) {
Intent i = new Intent(this, OAuthActivity.class);
startActivity(i);
finish();
} else {
// Get the users default list.
LoveDroid app = (LoveDroid) getApplication();
user = new User(app);

m_progressDialog = ProgressDialog.show(MyListActivity.this, "Please Wait", "Loading", true);
listThread = new Thread(null, threadProc_initializeQueue);
listThread.run();
}

}

我见过其他人有这个问题,他们基本上都绕过推荐一条看起来像我的线路

m_progressDialog = ProgressDialog.show(MyListActivity.this, "Please Wait", "Loading", true);

其余代码有效,用户电影通过线程下载,但对话框从未出现,它也需要几秒钟,这不像对话框在它有时间出现之前就被关闭了。

最佳答案

最好用AsyncTask (而不是线程 - 这通常是 Android Activity 中的好习惯)。

创建一个 AsyncTask 类,并在该类上的 onPreExecute 处添加一个进度对话框,并在 onPostExecute 处关闭它。你可以找到一个例子 here .

除此之外,您的代码中还有一些问题:

  1. 在 onCreate(...) 调用 ProgressDialog.show(...) 通常会出现问题(因为在 onCreate 完成之前您不会看到它,这通常是在您的后台 Activity 完成之后)。
  2. 进度对话框中的所有操作都应仅在 UI 线程上执行,因此您不能在某个随机线程上使用 m_pd.dismiss()(这就是为什么您应该使用 AsyncTask )。

关于android - ProgressDialog 没有出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3484320/

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