另一个应用程序将我的活动推迟后,Android ProgressDialog不再可见

时间:2016-10-12 15:24:06

标签: android progressdialog

假设我有两个正在运行的应用程序A& B在API级别8设备上。

从A开始,我开始一个开始长时间运行解压缩过程的活动(假设大约有4场演出)。我在ProgressDialog中显示了这个进展。

同时,通过手动操作,操作会导致B响应并使用ProgressDialog将活动推离屏幕(调用onStop)。 我执行了一些操作,当我完成时,我隐藏了B的活动。 这样A的活动就会出现在屏幕上(调用onResume)。

然而,即使长时间运行的进程仍在运行,ProgressDialog也不见了。调用OnStop后,我的ProgressDialog是如何消失的?为什么它不会在我的OnResume中重新出现?

据推测,活动的背景已经改变,因此在活动背景下调用的ProgressDialog也不见了。但是由于长时间运行的进程仍在运行并处于正常工作状态,因此我应该能够获得ProgressDialog的相同实例。 但是只是调用.show()将无效。

请注意,功能在单个应用程序中正常运行。当两个应用程序相互争斗时,这纯粹是个问题。

2 个答案:

答案 0 :(得分:0)

仅在状态还原之间不保留对话框,如果您希望系统还原对话框,则需要使用DialogFragment。

答案 1 :(得分:0)

您可以通过解压缩过程发送广播,并在活动中注册一个显示进度对话框的广播接收器。

如果您想使用对话框片段方法,可以使用与早期Android版本向后兼容的support library

或者只是显示隐藏对话框,具体取决于活动生命周期:

public class MainActivity extends Activity {

private ProgressDialog mDialog;

 @Override
    protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
mDialog=new ProgressDialog(this);

}
@Override
    protected void onResume() {
        super.onResume();
        mDialog.show();
    }
@Override
    protected void onStop() {
        super.onStop();
        mDialog.hide();
    }
@Override
    protected void onDestroy() {
        super.onDestroy();
        if(mDialog!=null){
            mDialog.dismiss();
        }
    }
}