基本上,我有一个活动,其中包含视频会议应用程序的代码。我需要将其保留在后台。这样,当用户按下按钮时,我将创建一个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");
使用它来跟踪您的活动流程和名称。