有人对Andorid与Thread的ProgressDialog有任何想法吗?我成功地能够显示对话框并将其解除,但是我有一些很长的逻辑要做,然后才会关闭对话框,直到该对话框显示加载消息。我把我的逻辑代码放在线程的Run方法中,而条件是,直到我没有得到特定的结果,它才会运行代码。但不知何故,它给Handler和Looper.prepare()
错误。我试图找到这个,并了解我必须使用Handler类的功能。
答案 0 :(得分:1)
ProgressDialog属于用户界面。在开始线程之前,不要在线程和节目中忽略它;
像这样。 Thread th=new Thread(this);
ProgressDialog pd=new ProgressDialog(this);
pd.setMessage("Loading...");
pd.show();
th.start();
现在让处理程序类解散它
void run(){
///do your work;
handler.sendEmptyMessage(0);
}
private Handler handler=new Handler(){
//override onhandle message method and dismiss dialog in it
}
答案 1 :(得分:0)
同样,你可以实现AsyncTask概念,这在Android中非常适合实现线程任务,通过实现这个任务,系统本身可以处理线程任务,如start,run,stop ...... 。等等。这就是为什么它被称为Painless Threading。
如果您已经通过AsyncTask链接,那么我确信您已经注意到了AsyncTask的这4种方法。
对于您的问题,您可以按如下方式实现AsyncTask:
dialog.dismiss();
我相信你现在明白了。
一切顺利。
你只需要在onPreExecute()方法中编写Dialog.Show()方法,在onPostExecute()方法中编写dialog.dismiss()。是的,我已经告诉了1000次,你不能直接在doInBackground()方法中写Toast,因为Android不允许在主线程上骑,如果你仍想执行它,那么在内部写入相同的Toast消息runOnUiThead方法(此方法应位于doInBackground()。
中