我想这是直接向 Mark 提出的问题,但我终生无法从 WakefulIntentService 的 doWakefulWork 方法中获得 Toast 通知。它从 onCreate 开始工作,但我需要使用通过 toast 消息中的意图获得的一些数据。
我试图从 OnCreate 中实例化处理程序,但这似乎没有做任何事情。我已经尝试了我能想到的一切。Toast 似乎并没有在主线程上运行。有什么帮助吗?
我想这是直接向 Mark 提出的问题,但我终生无法从 WakefulIntentService 的 doWakefulWork 方法中获得 Toast 通知。它从 onCreate 开始工作,但我需要使用通过 toast 消息中的意图获得的一些数据。
我试图从 OnCreate 中实例化处理程序,但这似乎没有做任何事情。我已经尝试了我能想到的一切。Toast 似乎并没有在主线程上运行。有什么帮助吗?
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;
从任何地方设置即可向您显示吐司通知。
通常,它不是为 a有意义WakefulIntentService
的场景而设计的,因为用户可能在也可能不在。Toast
此外,服务不应该以这种方式直接影响 UI,因为如果用户在附近,用户可能不会在他们的游戏、导航、电影等中间欣赏你Toast
。我宁愿你使用其他东西(例如,命令广播以更新前台活动或Notification
在没有此类活动时显示 a)。
如果您确实确定要使用Toast
来自服务的 a,那么您的问题应该WakefulIntentService
与普通的IntentService
. 这个 SO question有一些答案,展示了使用 aToast
从服务的后台线程中使用 a Handler
,这可能有助于指示您的Handler
实现哪里出错了。