问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

我在asynctask里面使用toast但是实际没有提示消息,为什么

发布网友 发布时间:2022-04-25 02:14

我来回答

1个回答

热心网友 时间:2023-10-21 00:04

Service中可以正常显示Toast,IntentService中不能正常显示Toast,在2.3系统上,不显示toast,在4.3系统上,toast显示,但是不会消失。

2. 原因

Toast要求运行在UI主线程中。
Service运行在主线程中,因此Toast是正常的。
IntentService运行在独立的线程中,因此Toast不正常。

3. 在IntentService中显示Toast

利用Handler,将显示Toast的工作,放在主线程中来做。具体有两个实现方式。

Handler的post方式实现,这个方式比较简单。
private void showToastByRunnable(final IntentService context, final CharSequence text, final int ration) {
Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(context, text, ration).show();
}
});
}

Handler的msg方式实现,这个方式比较复杂。
Handler msgHandler = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(Message msg) {
Toast.makeText(ToastIntentService.this, msg.getData().getString("Text"), Toast.LENGTH_SHORT).show();
super.handleMessage(msg);
}
};
private void showToastByMsg(final IntentService context, final CharSequence text, final int ration) {
Bundle data = new Bundle();
data.putString("Text", text.toString());
Message msg = new Message();
msg.setData(data);
msgHandler.sendMessage(msg);
}

4. 关于耗时操作

Service中如果有耗时的操作,要开启一个Thread来做。
IntentService是在独立的线程中,所以可以进行一些耗时操作。

5. 考虑AsyncTask与Service的使用区别

如果是全后台的工作,使用Service,结果的提示可以使用Notification。
如果是异步工作,工作结束后需要更新UI,那么最好使用Thread或者AsyncTask。
我在asynctask里面使用toast但是实际没有提示消息,为什么

Service中可以正常显示Toast,IntentService中不能正常显示Toast,在2.3系统上,不显示toast,在4.3系统上,toast显示,但是不会消失。2. 原因 Toast要求运行在UI主线程中。Service运行在主线程中,因此Toast是正常的。IntentService运行在独立的线程中,因此Toast不正常。3. 在IntentService中显示Toast 利用Ha...

android线程间通信有哪些方式

1.AsyncTask机制   AsyncTask,异步任务,也就是说在UI线程运行的时候,可以在后台的执行一些异步的操作;AsyncTask可以很容易且正确地使用UI线程,AsyncTask允许进行后台操作,并在不显示使用工作线程或Handler机制的情况下,将结果反馈给UI线程。但是AsyncTask只能用于短时间的操作(最多几秒...

为什么在doInbackground更新UI线程会遇到错误

1. 我所理解迄今为止,Android是..., 我们不能从更新后台线程UI线程。 可能是他们必须从更新后台线程的UI的情况下。 其中的原因是很清楚...@OS级别会有这么多的线程将运行。 并且还 从不同的应用不同的线程,而在这种情况下,这将是混乱的屏幕上,如果我们能够从BG-线程更新用户界面 2. 所以你...

Service服务详解以及怎么使service服务不被杀死

比如想播放音乐,但只在程序运行时播放,你可能在 onCreate() 开一个线程,在 onStart() 中开启它,在 onStop() 停止它。也可以考虑使用 AsyncTask 或者HandlerThread 取代一般的线程。记住,如果使用一个服务,它还是默认在主线程中运行,如果会发生阻塞,还是要在服务中另开线程的。在manifest 文件声明服务要使用服务就...

一般Android培训学校学习课程有哪些?

2.Activity启动模式及Intent七大属性2.1 Task和Back Stack的基本概念2.2 Activity的启动模式2.3 Intent属性的特点及用法3.AsyncTask异步任务3.1 使用异步任务的必要性3.2 异步任务的用法4.ListView基本用法及适配器介绍4.1 ListView基本用法4.2 SimpleAdapter4.3 BaseAdapter5.ListView优化及分页加载数据、GridView加载网络图片、...

Service和IntentService中显示Toast的区别

Service中可以正常显示Toast,IntentService中不能正常显示Toast,在2.3系统上,不显示toast,在4.3系统上,toast显示,但是不会消失。2. 原因 Toast要求运行在UI主线程中。Service运行在主线程中,因此Toast是正常的。IntentService运行在独立的线程中,因此Toast不正常。3. 在IntentService中显示Toast 利用...

为什么叫toast android取消toast toast什么 toast怎么用 Android toast buttered toast on toast toast for a toast
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
手机欠费了 然后交了一点话费 还是属于停机状态还能收到短信吗_百度知... 小学语文面试,男生有优势吗 ...1-3题.与亚洲同在一块大陆的大洲是( )A.非洲B.欧洲C.北美洲D.南... ...个大洲与该洲是同处一块大陆?( )A.北美洲B.非洲C.欧洲D.大 三大宗教的发源地都在哪个洲?( ) A. 美洲 B. 非洲 C. 欧洲 D... ***.net framework 4.0安装失败 适合深夜的治愈文案(治愈人心的短句) 温柔且干净的文案,治愈的浪漫短句 适合深夜发的治愈文案(深夜走心短句) 接吻时舌头老是伸出来是怎么回事? 有斑点的海鱼,是什么鱼?能吃吗 请问地铁站一个站台装修下大概要多久?(包括吊顶、墙面、地面、门窗、等的装修) petit是什么意思 骆驼有几层眼睫毛: 奇特:子线程的Toast怎么显示不出来? 100吨水可以用多久? 王姓的来源简介100字? 凤尾竹盆景有哪些栽培优点? 连连看的游戏规则是怎样的? 地铁站内的装修风格会受到哪些因素的影响 100吨水能用几个月 凤尾竹盆景要怎样管理? 骆驼的眼皮怎么形容 73/32锂电池怎么组装? 我在百度怎么不能上传图片,点上传就只能是百度识图,求大师指点 骆驼的眼皮为什么有三层? 如何绘画q版动漫人物 q版动漫人物图片,要可爱的,越多越好! 去哪里举报诈骗电话 张庭夫妇“传销”被抓!好闺蜜陶虹的评论区沦陷,陶虹怎么了? 凤尾竹盆景要怎样浇水? 一般的两口之家,一个月用多少吨水? petit是什么意思 《法语助手》法汉 一个地铁口装修需要多少钱? 在android开发中windowmanager为什么不显示toast 连连看是益智游戏吗 女子跳水运动员穿的泳衣和女子游泳运动员穿的泳衣不同,为什么? 海里的鱼,黑色花斑,这是什么鱼 闰年是每几年过一次生日的? petit+coup是哪国的语言? 凤尾竹盆景的造型要怎样设计? 连连看是 点击按钮toast为什么没有显示 用水一个月多少吨,房东说他家用水一个月100吨 大家知道北京地铁哪站的站台装修比较有特色? 想看看 附图:生长海里的,身上有斑纹,是什么鱼 骆驼流眼泪吗??? 生日在闰年的,生日怎么算?(1998.7.10) 法语问题:petit的最高级和比较级是什么? 连连看是益智类游戏吗?