1)FOA PD(ProgressDialog)只能从Activity创建,不是吗?如果确实没有,请提供一个有用的例子。
2)如果PD应该在单独的线程中创建它是否可以创建并显示它的线程什么都不做?我的意思是这样的(假设mProgressDialog是类的属性):
new Thread(){
public void run(){
mProgressDialog = ProgressDialog.show(appContext,
appContext.getResources().getString(R.string.progress_wait),
appContext.getResources().getString(R.string.progress_db_installing),
true);
}.start();
据我所知,线程在执行run()后立即死亡,导致无事可做,因此PD无法显示。它应该有一些处理代码或至少一个具有一些可管理条件的空循环
3)如果PD应该在主线程中创建,应该只在OnCreate()方法的末尾创建,还是在OnCreate()方法中启动的某个名为/ caught(由某些Listener)的方法的主体中创建?
4)PD本身在显示时不会挂起任何线程,是吗?因此代码在show()方法之后继续执行。我的意思是show()本身并没有暂停/暂停线程,因为我猜它确实如此。
答案 0 :(得分:1)
1)不确定它是如何相关的,除非你能够提出在Activity上下文之外创建ProgressDialog的理由;我认为答案是“不”,但是。
2)不,您无法直接从后台线程创建对话框。你试过代码吗?它会因为一个有用的回溯而异常死亡。查看有关如何回调UI线程以执行诸如显示对话框之类的操作的任何一个SO问题。
3)您可以在活动的任何地方创建它;例如,在AsyncTask
的onPreExecute()
中执行此操作很常见,这可能是从onClick回调触发的。
4)否。