Android Async任务无效

时间:2012-03-17 12:21:07

标签: android

我通过创建一个对象从一个函数调用它。进度框出现然后消失但是没有显示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不会被调用。甚至没有显示吐司。为什么。

3 个答案:

答案 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