大佬教程收集整理的这篇文章主要介绍了如果上下文是一样的,为什么Toast是在Android中生成的?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
IntentService
,尝试使用Toast消息显示错误消息.1我想要显示消息,并添加了代码以使其正确的线程.最简单的变化是传递构造的
Toast
对象,然后显示在UI线程上.但是,只有当我把它放在已运行的东西中时,Toast才会显示,而不是如果我通过预制的吐司.
这样做:
@Override protected void onHandleIntent(Intent intent) { showToast("Error",Toast.LENGTH_LONG); } private void showToast(final String msg,final int duration) { new Handler(getMainLooper()).post(new Runnable() { @Override public void run() { // Make and show the toast in the posted runnable Toast.makeText(getApplicationContext(),msg,duration).show(); } }); }
这不行:
@Override protected void onHandleIntent(Intent intent) { // Make the toast here Toast myToast = Toast.makeText(getApplicationContext(),"Error",Toast.LENGTH_LONG); showToast(myToast); } private void showToast(final Toast toast) { new Handler(getMainLooper()).post(new Runnable() { @Override public void run() { // Show the toast here toast.show(); } }); }
在这两种情况下,上下文都是应用程序上下文,我没有看到任何源代码会导致一个版本正常工作,而另一个版本没有.相反,后者具有与Toentservice中直接显示的Toast相同的问题:“Handler(android.os.Handler){…}在死线程上向Handler发送消息”,Toast不消失等.
为什么吐司必须在主线程上制作,而不是在那里显示?
1.遗产=我不认为在Toast中显示错误消息是很好的UI,我不认为直接向用户显示消息的服务是一个好主意,但这是我传递的代码,我想让它这点好一点
以上是大佬教程为你收集整理的如果上下文是一样的,为什么Toast是在Android中生成的?全部内容,希望文章能够帮你解决如果上下文是一样的,为什么Toast是在Android中生成的?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。