我想经常检查我的应用程序是否存在新版本,如果有,请向用户显示一条消息。我使用Firebase,将远程配置的版本与应用程序的当前版本连接并进行比较。这不是问题,我的问题是如何在任何活动中随时显示对话框。
我有一个BaseActivity,在这里我有一些方法可以与firebase连接并在其回答时显示消息。此外,我有一个每小时执行一次此更新检查的方法:
private void checkUpdate() {
handlerCheckUpdate.postDelayed(() -> {
getConfigFromFirebase(this);
checkUpdate();
}, 3600000);
}
最后,我有了扩展了BaseActivity的Activity1和Activity2。在我的Activity1中,我启动递归checkUpdate方法。
问题是,如果用户当前在Activity2中,则当消息显示时,它将在Activity1中而不是Activity2中进行。这样做的最佳解决方案是什么?
非常感谢!
您可以为此设置警报对话框。查看警报对话框的示例
`android.app.AlertDialog.Builder alertDialogBuilder;
alertDialogBuilder = new AlertDialog.Builder(YourActivity.this);
alertDialogBuilder.setTitle("Your Title");
alertDialogBuilder.setMessage("Your massage");
alertDialogBuilder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.cancel();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();`
您需要在Application类中创建一个对话框,并将上下文传递给它。
class App : Application() {
fun showAlert(context: Context) {
val builder = AlertDialog.Builder(context)
builder.setTitle(getString(R.string.your_title))
builder.setMessage(getString(R.string.your_message))
builder.setPositiveButton("OK") { dialog, _ ->
dialog.dismiss()
}
val dialog: AlertDialog = builder.create()
dialog.setCancelable(false) // make it true if you want to cancel
dialog.setCanceledOnTouchOutside(false)
dialog.show()
}
}
并且您需要在清单文件中的application标记下添加此行
<application
android:name=".App"
android:allowBackup="false"
......>
通过传递上下文从您的任何活动中调用该函数:
App().showAlert(YourActivity.this)