如何通过启动服务创建通知或Toast?

时间:2018-12-09 12:42:38

标签: java android service

我正在开发一个基本的提醒应用程序,该应用程序的用户界面能够将用户设置的日期记录到sqlite数据库中。要完成我的应用程序,我想启动一个服务,该服务可以在手机重新启动时在后台启动并保持在后台运行,以便我可以定期检查数据库并在任何日期关闭时向用户显示通知消息。 / p>

我可以在启动时启动服务(可以将LOG消息发送到Android Studio),但是无法显示通知。看来我发现的示例始终依赖于活动,但是如果没有运行主应用程序,我将如何进行活动? (当然,这就是我的后台服务的重点,用户不必打开主应用程序。)

问题1:如何显示来自此服务的Toast消息?

Q2:如何显示此服务的通知?

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 个答案:

答案 0 :(得分:0)

所有这些东西都使用上下文来显示Toast或Notification。服务“充当”上下文,因此您可以执行与活动中相同的操作。您只需要注意正常服务会在UserInterface的同一线程中运行,因此,如果服务正在阻塞(以阻塞方式等待某个事件),即使UserInterface也被阻塞,并且在阻塞/冻结时无法显示通知或Toast