首页 文章

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

提问于
浏览
0

我正在开发一个基本的提醒应用程序,它具有一个能够将用户设置日期记录到sqlite数据库的用户界面 . 为了完成我的应用程序,我希望有一个服务在手机重启时启动并继续在后台运行,因此我可以定期检查数据库并在任何日期结束时向用户显示通知消息 .

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

Q1:如何从此服务显示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

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

相关问题