Android 历史应用程序堆栈-仍具有上次意图

Android 历史应用程序堆栈-仍具有上次意图,android,dialog,message,android-dialog,Android,Dialog,Message,Android Dialog,我有一项服务,有时会打开我的应用程序,有时会向用户发送主活动提示对话框消息, 用户回答是\否后,我调用finish()关闭应用程序 我的问题是,当消息显示时,用户应答,应用程序被调用到finish(),当您查看您以前玩过的最近历史记录时(例如在三星,您长按home按钮),您将看到我的应用程序以及用户启动的其他应用程序 当您按下按钮再次打开时,对话框将再次显示 如何在不显示对话框的情况下从最近的应用程序启动时显示活动 public void dialog_1(){ myDialog

我有一项服务,有时会打开我的应用程序,有时会向用户发送主活动提示
对话框
消息, 用户回答是\否后,我调用
finish()
关闭应用程序

我的问题是,当消息显示时,用户应答,应用程序被调用到
finish()
,当您查看您以前玩过的
最近历史记录时(例如在三星,您长按home按钮),您将看到我的应用程序以及用户启动的其他应用程序

当您按下按钮再次打开时,
对话框将再次显示

如何在不显示
对话框的情况下从最近的应用程序启动时显示活动

public void dialog_1(){
        myDialogViewN = new MyDialogViewNegativeTime(MainActivity.this);

        // Setting vibrator
        vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
        long[] pattern= {100, 1000};
        vibrator.vibrate(  pattern,0   );

        // Setting 2 Dialog Listeners       
        myDialogViewN.setOnDialogListener(new DialogListener()      {           
            @Override
            public void onNegativeClick()
            {           
                // Stopping Vibraror
                if (vibrator.hasVibrator()){
                    vibrator.cancel();
                    vibrator = null;
                }

                initialize_DialogToUser();                  /// ??
                SendDataToService(3);       //doesn't want reminder
                myDialogViewN.dismissDialog();
                waitForDialogAnswer=false;
                finish();
            }

            @Override
            public void onPositiveClick()
            {
                // Stopping Vibrator
                if (vibrator.hasVibrator()){
                    vibrator.cancel();
                    vibrator = null;
                }

                initialize_DialogToUser();
                SendDataToService(1);       //remind!
                myDialogViewN.dismissDialog();

                squre.setImageResource(R.drawable.triangle_red2);
                waitForDialogAnswer=false;
                finish();
            }       });         
     myDialogViewN.show();
    }
最后我找到了解决办法, 问题是当你从历史记录中打开应用程序时——服务到你活动的最后一个意图留在那里,而不是离开,相反,通过点击自己的图标打开应用程序。(不同的开放方式)

我的解决方案:
服务
活动
发送2个
意图

第一个-你真正需要的

第二次-在服务中收到答复后在第二秒内,您将不会放置任何数据改变历史应用程序中“卡住”的意图仅仅是一种意图


也许这很愚蠢,但这是我找到的唯一解决方案:)

进行调试并查看:1-如果“myDialogViewN.dismissDialog()”隐藏了对话框2-恢复活动时不会再次调用myDialogViewN.show()。我检查了它,用户回答后该对话框明显被取消(通过
myDialogViewN.dismissDialog()
),但问题仍然存在。每次我从历史应用程序打开应用程序时,对话框都是show againit,似乎android会保存此应用程序状态,只要你从历史应用程序打开它。但是如果你一般通过点击图标打开它,在这个打开的时候就可以了。好的,你检查了对话框隐藏,但是我告诉过你的另一个?我已经多次使用对话框,但这种情况从未发生过。我也检查了
myDialogViewN.show()
,它确实会再次调用。
@Override
public void onDestroy()
{
    super.onDestroy();

    // close/stop running application on background
    int id= android.os.Process.myPid();
    android.os.Process.killProcess(id);
}