基本上,我有一个活动,其中包含视频会议应用程序的代码。我需要将其保留在后台。这样,当用户按下按钮时,我将创建一个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从后台恢复活动

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

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的逻辑,但是并不能为我提供整个Backstack。还有另一种方法可以获取后备堆栈,因此我实际上可以知道要开始的活动吗?

最佳答案

使用Intent.FLAG_ACTIVITY_CLEAR_TOP启动活动

你也可以参考
this

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


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

07-27 21:31