我通过创建一个对象从一个函数调用它。进度框出现然后消失但是没有显示toast。(我已经删除了toast之后的代码,但即使查询网页的代码也没有在doinBackground中执行)
private class MyTask extends AsyncTask<Void, Void, Void> {
MyTask(String p) {
enter=p;
}
protected void onPreExecute() {
progressDialog = ProgressDialog.show(CheckitoutActivity.this,"", "Loading. Please wait...", true);
}
protected Void doInBackground(Void... params) {
try {
Toast.makeText(getApplicationContext(), "GHJGFHGJL",1000).show();
}
}
@Override
protected void onPostExecute(Void result) {
progressDialog.dismiss();
}
}
doInBackground不会被调用。甚至没有显示吐司。为什么。
答案 0 :(得分:2)
doInBackground
方法是非UI线程,因此无法显示Toast
因此请使用runOnUIthread(this)
或onProgressUpdate
并确保.execute()
对象,如objMytask.execute();
答案 1 :(得分:2)
Toast
(您无法触及doInBack()中的UI线程,这就是为什么)在doInBackground()
中不起作用所以只需放置Log
protected Void doInBackground(Void... params) {
try
{
Log.e("AsyncTask","Inside the doInBackground()");
}
}
现在检查您的logcat
...如果显示ProgressDailog
,则您的AsyncTask
效果正常。
答案 2 :(得分:2)
您无法在doInBackground方法中显示类似toast和对话框警报的UI。相反,你可以在asynkTask的postExecute方法中显示这些UI