java如何从启动服务创建通知或Toast?
我正在开发一个基本的提醒应用程序,它有一个用户界面,能够将用户设置的日期记录到sqlite数据库中。为了完成我的应用程序,我希望有一个服务在手机重启时在后台启动并保持运行,这样我可以定期检查数据库,并在任何日期接近时向用户显示通知消息
我可以在启动时启动我的服务(我可以向Android Studio发送日志消息),但我不能显示通知。我发现的例子似乎总是依赖于一个活动,但是如果没有主应用程序运行,我怎么会有一个活动呢?(当然,这也是我后台服务的重点,用户不必打开主应用程序)
问题1:如何显示此服务的Toast消息
问题2:如何显示来自此服务的通知
public class autostartservice extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
for (int i = 0; i < 40; i++) {
synchronized (this) {
try {
wait(1000);
} catch (Exception e) {}
Log.i("myDebug", "Just wait here couple second until the phone boots all the way");
}
}
Toast.makeText(context, "Look at this Toast! Cool uh?", Toast.LENGTH_SHORT).show();
}
}
}
# 1 楼答案
所有这些都使用上下文来显示祝酒词或通知。服务“充当”上下文,因此您可以执行与在活动中相同的操作。您只需注意,正常服务在UserInterface的同一线程中运行,因此,如果服务正在阻塞(以阻塞方式等待某个事件),甚至UserInterface也会被阻塞,并且在阻塞/冻结时无法显示通知或祝酒词