有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

  1. # 1 楼答案

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