在我的应用程序中,我想为所有活动显示共同的AlertDialog
在我的后台线程中,服务器数据会定期出现。
现在,如果某些用户定义的条件与该数据匹配,我想在屏幕上显示当前正在进行的任何活动中的AlertDialog
。
如何识别显示AlertDialog
的位置?
如果我的申请是在后台,我想设置Notifications
而不是AlertDialog
。
答案 0 :(得分:0)
您需要在后台运行服务。
所有需要的代码都在那里:
您的服务会向您的活动发送广播。 如果您的活动不在前台,则不会发生任何事情。
答案 1 :(得分:-1)
您可以通过以下任何一种方式从后台显示提醒对话框...
但在显示对话框之前,您需要使用下面的一个布尔标志检查活动是否正在运行,否则您将获得WindowManager$BadTokenException
。
// Flag to check if activity is running or not
boolean isActivityRunning = false;
@Override
protected void onResume() {
super.onResume();
isActivityRunning = true;
}
@Override
protected void onPause() {
super.onPause();
isActivityRunning = false;
}
<强> 1。 runOnUiThread 强>
你需要在下面的UI线程上显示你的对话...
runOnUiThread(new Runnable() {
@Override
public void run() {
if(isActivityRunning) {
// Your dialog code.
AlertDialog ActiveCallDialog = new AlertDialog.Builder(context)
.setMessage(R.string.message)
.setTitle(R.string.title)
.setIcon(android.R.drawable.ic_dialog_alert)
.show();
}
}
});
<强> 2。处理程序
您可以在Activity Class中创建一个处理程序,并可以调用sendMessage到该处理程序对象。编写代码以在Handler的handleMessage方法中显示警报,例如:
活动类
Handler mHandler = new Handler()
{
public void handleMessage(Message msg)
{
if(isActivityRunning) {
//Display Alert
AlertDialog ActiveCallDialog = new AlertDialog.Builder(context)
.setMessage(R.string.message)
.setTitle(R.string.title)
.setIcon(android.R.drawable.ic_dialog_alert)
.show();
}
}
};
<强>发强>
Thread thread= new Thread()
{
public void run()
{
mHandler.sendEmptyMessage(0);
}
}