如何在AsyncTask中举杯,提示我使用Looper

发布于 2024-09-01 10:52:45 字数 172 浏览 5 评论 0原文

我有 AsyncTask 在后台完成的任务。在某些时候,我需要发出一个 Toast 来表示某件事已完成。

我尝试过但失败了因为 引起:java.lang.RuntimeException:无法在未调用 Looper.prepare() 的线程内创建处理程序

我该怎么做?

I have tasks completed by AsyncTask in background. At some point I need to issue a Toast that something is completed.

I've tried and I failed because
Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

How can I do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

残疾 2024-09-08 10:52:45

onPostExecute - 在 UI 线程上执行
或者
publishProgress();在你的 doinbackground 和

protected void onProgressUpdate(Integer... progress) {
}

http://developer.android.com/reference/android/os /AsyncTask.html

onPostExecute - executes on UI thread
or
publishProgress(); in your doinbackground and

protected void onProgressUpdate(Integer... progress) {
}

http://developer.android.com/reference/android/os/AsyncTask.html

邮友 2024-09-08 10:52:45

你可以在Toast里面doInBackground

添加这段代码在你想要Toast出现的地方

runOnUiThread(new Runnable() {
public void run() {

    Toast.makeText(<your class name>.this, "Cool Ha?", Toast.LENGTH_SHORT).show();
    }
});

you can Toast inside doInBackground

add this code where you want to Toast appear

runOnUiThread(new Runnable() {
public void run() {

    Toast.makeText(<your class name>.this, "Cool Ha?", Toast.LENGTH_SHORT).show();
    }
});
穿透光 2024-09-08 10:52:45

您还可以使用 runOnUiThread 方法从后台线程操作您的 UI。

You can also use runOnUiThread method to manipulate your UI from background threads.

对岸观火 2024-09-08 10:52:45

如果你想使用吐司
你应该使用这个方法:onProgressUpdate()

protected Integer doInBackground(Void...Params) {
   int check_point = 1;
   publishProgress(check_point);
   return check_point;
}

protected void onProgressUpdate(Integer integers) {
  if(integers == 1) {
    Toast.makeText(classname.this, "Text", 0).show(); 
}

If you want to use Toast
You should use this method : onProgressUpdate()

protected Integer doInBackground(Void...Params) {
   int check_point = 1;
   publishProgress(check_point);
   return check_point;
}

protected void onProgressUpdate(Integer integers) {
  if(integers == 1) {
    Toast.makeText(classname.this, "Text", 0).show(); 
}
美人如玉 2024-09-08 10:52:45

如果要从后台线程显示 Toast,则必须从 doInBackground 调用 runOnUiThread。我不相信还有其他方法。

编辑:我收回那句话。我认为您可以实现 onProgressUpdate(它在 UI 线程上运行)来显示 Toast 并从 doInBackground 调用publishProgress。

If you want to display the Toast from the background thread you'll have to call runOnUiThread from doInBackground. I don't believe there's another way.

Edit: I take that back. I think you can implement onProgressUpdate, which runs on the UI thread, to show the Toast and make calls to publishProgress from doInBackground.

許願樹丅啲祈禱 2024-09-08 10:52:45

如果想在doInBackground中显示Toast,可以在AsyncTask的OnPostExecute方法中使用。

protected void onPostExecute(String file_url) {    
   Toast.makeText(getApplicationContext(),"Your Message", Toast.LENGTH_LONG).show();

   pDialog.dismiss();//dismiss the progress dialouge
}

If you want to display the Toast in doInBackground, you can use it in the OnPostExecute method of AsyncTask.

protected void onPostExecute(String file_url) {    
   Toast.makeText(getApplicationContext(),"Your Message", Toast.LENGTH_LONG).show();

   pDialog.dismiss();//dismiss the progress dialouge
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文