在非活动类中显示对话框 1 次/天

问题描述

我希望每天在特定时间在我的 Android 应用中显示一个警报对话框。我创建了一个线程运行检查操作系统时间的类,一旦时间匹配,我想在用户正在进行的任何活动中显示一个警报对话框。我试图传递当前的上下文和当前的活动,但都没有工作,因为对话框没有出现。有谁知道如何解决这个问题?这是我的非活动类中的 2 个函数

void start_time_thread() {
        Thread thread = new Thread(() -> {
            Looper.prepare();
            while (true) {
                int currentHour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY); //Current hour
                if (currentHour > hour || currentHour < hour) {
                    Log.d(TAG,"Current Hour: " + currentHour + " reminder hour: " + hour);
                } else {
                    int currentMin = Calendar.getInstance().get(Calendar.MINUTE); //Current min
                    if ((min - 1) == currentMin) {
                        showWarningalert(CURRENT_CONTEXT);
                        break;
                    }
                }
                try {
                    Thread.sleep(5000);
                } catch (InterruptedException e) {
                    e.printstacktrace();
                }
            }
        });
        thread.start();
    }
 private void showWarningalert(Activity activity) { //Added current activity
        AlertDialog alertDialog = new AlertDialog.Builder(activity).create(); //Use activity
        alertDialog.setTitle("Reminder");
        alertDialog.setMessage("Reminder msg");
        alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL,"OK",new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog,int which) {
                        dialog.dismiss();
                    }
                });
        alertDialog.show();
    }

解决方法

你需要使用:

1- 工作经理 2- 报警管理器

实现在特定时间向用户显示对话框,因为android系统为了电池优化而杀死后台服务