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

Posted

技术标签:

【中文标题】在非活动类中显示对话框 1x/天【英文标题】:Show Dialog in non-activity class 1x/day 【发布时间】:2021-08-19 23:46:06 【问题描述】:

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

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】:

您需要使用:

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

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

【讨论】:

以上是关于在非活动类中显示对话框 1x/天的主要内容,如果未能解决你的问题,请参考以下文章

打开对话框活动时,如果在堆栈中,启动器活动始终显示在下方

在片段活动中显示自定义对话框

如何在 Android 中开始活动之前显示进度对话框?

通过 UIActivityViewController 进行的 Facebook 共享不会在共享对话框中显示所有活动项

将片段显示为对话框或常规活动

如何在家庭活动android上显示进度对话框?