如何在不完成当前活动的情况下返回上一个活动

时间:2017-12-06 12:26:55

标签: android android-intent android-activity back-stack activity-manager

基本上,我有一个活动,其中包含视频会议应用的代码。我需要在后台保留它。因此,当用户按下按钮时,我创建一个FloatingViewService,并从我的活动中将数据发送到该FloatingViewService。我可以举例说(这个工作),启动一个新的意图,并使用它来浏览我的应用程序,而我之前的活动仍在工作,并将数据发送到FloatingViewService。 现在我的问题是我不想开始随机活动,但我想在开始通话之前回到之前的活动。 当我开始通话时,我这样做:

   Intent intent = new Intent(HomeActivity.this, InCallActivity.class);
    intent.putExtra("url", "url");
    intent.putExtra("test", false);
    startActivity(intent);

注意!创建第二个活动后,如果我调用完,它将带我进入我的HomeActivity。哪个很棒。 但我不想完成,我只是想进入我的班级被调用的活动。

我尝试使用:moveTaskToBack(true);,但它会将应用程序发送到主屏幕。 我也做了这个代码:

 ActivityManager m = (ActivityManager) getSystemService(ACTIVITY_SERVICE );
    List<ActivityManager.RunningTaskInfo> runningTaskInfoList =  m.getRunningTasks(10);
    Iterator<ActivityManager.RunningTaskInfo> itr = runningTaskInfoList.iterator();
    while(itr.hasNext()){
        ActivityManager.RunningTaskInfo runningTaskInfo = (ActivityManager.RunningTaskInfo)itr.next();
        int id = runningTaskInfo.id;
        CharSequence desc= runningTaskInfo.description;
        int numOfActivities = runningTaskInfo.numActivities;
        String topActivity = runningTaskInfo.topActivity.getShortClassName();
        Log.i("","top activity: " + topActivity);
    }

认为我可以使用FLAG_ACTIVITY_REORDER_TO_FRONT

从Backstack恢复活动

但我没有恢复活动,为什么? 我得到的只是:

12-06 13:17:54.213: D/HeartRateApplication(3168): top activity: com.vidyo.vidyocore.activities.WebViewActivity
12-06 13:17:54.213: D/HeartRateApplication(3168): top activity: com.google.android.launcher.GEL

但如果我完成了,显然我的HomeActivity就在那里,因为它让我回到了它。为什么我不能从正在运行的活动中获取它? 我该如何解决这个问题?

编辑:

有评论说我应该有意图开始活动。所以我觉得也许我不够清楚。 我无法启动默认活动的意图。 有可能从多个活动中调用此InCallActivity。因此,我需要知道之前有什么活动,所以我可以调用该活动的意图,就像我说FLAG_ACTIVITY_REORDER_TO_FRONT 因此使用runningTaskInfo的逻辑但不能为我提供整个后台。有没有另一种方法来获得后台,所以我真的可以知道开始的活动了吗?

1 个答案:

答案 0 :(得分:1)

使用 Intent.FLAG_ACTIVITY_CLEAR_TOP

启动活动

你也可以参考 this

String Activity name= getIntent().getStringExtra("mActivityName");

使用它来跟踪您的活动流程和名称。