Android 保持对话高于活动
我有一个依赖于连接的应用程序,它有许多活动。每当连接断开时,我需要显示一个进度重新连接对话框,并将其保持到连接恢复或用户退出,无论运行的活动如何。我使用此方法拦截BaseActivity中的连接失败事件,BaseActivity是我所有活动的父级:Android 保持对话高于活动,android,user-interface,android-activity,Android,User Interface,Android Activity,我有一个依赖于连接的应用程序,它有许多活动。每当连接断开时,我需要显示一个进度重新连接对话框,并将其保持到连接恢复或用户退出,无论运行的活动如何。我使用此方法拦截BaseActivity中的连接失败事件,BaseActivity是我所有活动的父级: public void xmppConnectionClosed() { connectionError = true; onScreenActivity.runOnUiThread(new Runna
public void xmppConnectionClosed() {
connectionError = true;
onScreenActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
initiateReconnectionDialog(onScreenActivity); //onScreenActivity is singlton represent the current activity
reconnectionDialog.setMessage(onScreenActivity
.getString(R.string.reconnectionDialogReconnecting));
reconnectionDialog
.setStatus(ReconnectionStatus.RECONNECTING);
// setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
reconnectionDialog.show();
}
});
}
它的onCreate
protected void onCreate(android.os.Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (connectionError) {
initiateReconnectionDialog(this);
reconnectionDialog.show();
}
}
现在的问题是,如果我有活动A,在旋转设备时启动活动B,则会调用活动A的onCreate,如果我试图显示对话框,则会抛出一个异常,表明它不是前台活动。
你知道如何处理这种情况吗?这听起来像是一个必须从后台服务中打开的对话框。必须如此,因为您不在乎活动是否正在运行。该活动必须启动服务并在后台运行。这听起来像是一个必须从后台服务打开的对话框。必须如此,因为您不在乎活动是否正在运行。活动必须启动服务并在后台运行。您可以在OnRetainonConfiguration实例中关闭该对话框。您应该能够在活动的on create then中重新创建该对话框。您可以在OnRetainonConfiguration实例中取消该对话框。您应该能够在活动的“创建时”中重新创建对话框。这听起来不错,但旋转设备时显示对话框会取代所有视图,因此在方向更改时不会更改。请阅读您的文档。因为后台服务正在启动一个对话框,所以它不需要活动,也不受该活动方向的影响。这听起来不错,但是当旋转设备时显示对话框会取代所有视图,因此,当方向改变时,不会改变对话框。请阅读您的文档。因为后台服务正在启动对话框,所以它不需要活动,也不受活动方向的影响。