我猜这是一个直接问Mark的问题,但我无论如何也不能从WakefulIntentService的doWakefulWork方法中获得Toast通知。它在onCreate中工作,但我需要使用一些数据,这些数据是我通过toast消息中的意图获取的。
我试图从OnCreate中实例化处理程序,但这似乎没有任何作用。我已经试过我能想到的所有方法了。Toast似乎不是在主线程上运行的。有什么帮助吗?
发布于 2012-03-08 23:34:45
一般来说,WakefulIntentService不是为Toast有任何意义的场景而设计的,因为用户可能在附近,也可能不在附近。此外,服务不应该以这种方式直接影响UI,因为如果用户在附近,用户可能不欣赏您的Toast在他们的游戏,他们的导航,他们的电影等。我宁愿你使用其他东西(例如,订购广播更新前台活动或显示一个Notification,如果没有这样的活动)。
如果您确实确定要使用服务中的Toast,那么您的问题应该与WakefulIntentService无关--使用常规的IntentService也会遇到同样的问题。This SO question提供了一些答案,演示了如何使用Handler从服务的后台线程中使用Toast,这可能有助于指出您的Handler实现出了什么问题。
发布于 2012-03-08 23:31:57
private boolean showToast = false;
...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (showToast) {
Toast.makeText(this,"YourText",Toast.LENGTH_LONG).show();
showToast = false;
}
}只需将showToast = true;从任何地方设置为显示吐司通知即可。
https://stackoverflow.com/questions/9620067
复制相似问题