问题描述
我希望每天在特定时间在我的 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系统为了电池优化而杀死后台服务