1

기본적으로 화상 회의 앱의 코드가 포함 된 활동이 있습니다. 그리고 저는 그것을 배경으로 유지해야합니다. 따라서 사용자가 버튼을 누르면 FloatingViewService를 만들고 내 액티비티에서 데이터를 해당 FloatingViewService로 보냅니다. 예를 들어, (이전의 작업이 여전히 작동하는 동안) 새로운 의도를 시작하고 내 앱을 탐색하는 데 사용할 수 있으며 데이터를 FloatingViewService로 보냅니다. 이제는 임의의 작업을 시작하고 싶지 않지만 통화를 시작하기 전에 이전 작업으로 돌아가고 싶습니다.현재 활동을 마치지 않고 이전 활동으로 되돌리려면

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

을 그리고 참고 : 내 통화를 시작하면 , 나는이 좋아해요! 두 번째 액티비티가 생성 된 후, 내가 끝내면 HomeActivity로 이동합니다. 어느 것이 굉장합니다. 하지만 끝내고 싶지 않습니다. 단순히 수업을 듣고있는 활동으로 가고 싶습니다.

나는 시도 : moveTaskToBack(true);과 함께했지만 응용 프로그램을 홈 화면으로 보냅니다. 나는, 그 이유는 다시 내 활동을하지 마십시오 FLAG_ACTIVITY_REORDER_TO_FRONT

를 사용하여,

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); 
    } 

나는 가기 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을 사용하지만 그것이 전체 백 스택을 제공하지는 않는다. 뒷걸음질을 얻을 수있는 또 다른 방법이 있습니까, 그래서 실제로 시작할 whay 활동을 알 수 있습니까?

답변

1
또한 당신이 당신의 활동 흐름과 이름을 추적 할 this

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

사용이 참조 할 수 있습니다 Intent.FLAG_ACTIVITY_CLEAR_TOP

를 사용하여 활동을 시작

.

+0

이렇게 말해 보겠습니다. 나는 활동 B를 시작한 다음 그것을 시작한 활동으로 돌아가고 싶다. 나는 A -> B 3 가지 경우가있을 수 있으며 B -> A, A -> B 그리고 B -> A ', A "-> B가 필요하고 B -> A가 필요합니다. B에서 어떤 수업을 시작했는지 알 수 있으며 그 수업에 대한 의도를 시작합니다. 추신 : 이것은 라이브러리이므로 B 클래스의 코드에 액세스 할 수 있지만 B 클래스의 의도를 호출하는 클래스 A, A ', A "는 수정할 수 없습니다. 그 이유는 다음과 같습니다. 배낭.내 진짜 질문은 분명히 그것이 거기에있는 경우 Backstack이 활동 A를 반환하지 않는 이유입니다. (완료는 나를 다시 시작합니다) –

+0

이제 복잡해지고 있지만 문제에 대한 매우 간단한 해결책은 TAG를 추가하는 것입니다. intent.putExtra (ACT 이름)와 함께 활동 흐름을 추적 할 수 있습니다. .............................. .................. 예 : String mAdvId = getIntent(). getStringExtra ("mADV"); 문자열 mCliId = getIntent(). getStringExtra ("mCLI"); 문자열 mCasStat = getIntent(). getStringExtra ("mCAS"); –

+0

나는이 대답을 받아 들일 것이다. 왜냐하면 그것이 내가 할 일이기 때문에, 문서를 통해 사용자가 활동의 이름을 보내도록 강요하고 필요할 때 그 의도를 만들어야한다. –