Mih*_*hah 6 android android-alertdialog
在我的应用程序中,我想显示AlertDialog
所有活动的通用.
在我的后台线程中,服务器数据会定期出现.
现在,如果某些用户定义的条件与该数据匹配,我想在屏幕AlertDialog
上显示当前正在进行的任何活动.
如何识别显示位置AlertDialog
?
如果我的应用程序是在后台,我想设置Notifications
而不是AlertDialog
.
Pri*_*tel -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;
}
Run Code Online (Sandbox Code Playgroud)
1.在UiThread上运行
您需要在 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();
}
}
});
Run Code Online (Sandbox Code Playgroud)
2. 处理程序
您可以在 Activity 类中创建处理程序,并可以调用 sendMessage 到该处理程序对象。在Handler的handleMessage方法中编写显示alert的代码,例如:
活动课
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();
}
}
};
Run Code Online (Sandbox Code Playgroud)
线
Thread thread= new Thread()
{
public void run()
{
mHandler.sendEmptyMessage(0);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3867 次 |
最近记录: |