2010-07-01 6 views
6

안드로이드에서 하나의 액티비티의 여러 인스턴스를 생성 할 수 있습니까?Android - 활동의 여러 인스턴스를 만드는 방법?

나는 현재 다음과 같은 코드를 사용하여 VoIP를 시험에 대한 내 자신의 inCall 화면을 시작합니다


 public void initInCallScreen(String pName, String phoneNumber, int contactID, boolean 
     callDirection, int lineID){ 

    //starts in callScreen dialog 
    final Intent myIntent = new Intent(context, CallDialogActivity.class); 
    myIntent.putExtra("NAME", pName); 
    myIntent.putExtra("NUMBER", phoneNumber); 
    myIntent.putExtra("ID", contactID); 
    myIntent.putExtra("CALLTYPE", callDirection); //True = Incoming, False = Outgoing 
    myIntent.putExtra("LINEID", lineID); 
    myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(myIntent); 

이 날 활동 벌금을 시작할 수 있습니다.

그러나 한 순간을 호출하면 새로운 Activity를 생성하여 스택에 배치하는 대신 이미 생성 된 Activity로 돌아갑니다.

내가 여러 번 작업을 만들 수 있도록하고 싶습니다

그래서 스택에 두 개 또는 3 활동이 사용자는

이인가 ... 뒤로, 홈 등의 버튼을 사용하여, 그들 사이에 전환 할 수 있습니다 가능하다면 내가 뭘 잘못하고 있니? 나는 초를 호출 할 때

+0

내가 적절한 연구를하지만 설명을 제공하지, 난 번지 해요 왜냐하면'CallDialogActivity'는'single top' 런치 모드에 속하기 때문에 당신이 할 수있는 일이 많지 않다고 생각합니다. 이것이 명시 적으로 지정되지 않은 경우 요청한 동작이 기본값이됩니다 ... –

+0

단일 최상위인지 확인하는 방법이 있습니까? –

+0

@DonalRafferty님께 서이 문제를 해결할 수 있었습니까? –

답변

7

는 그러나 은 새로운 활동을 생성하고 스택에 배치하는 것이 아니라 생성 된 활동 이미 로 돌아갑니다.

목표를 방해하는 android:launchMode 속성을 추가하도록 매니페스트를 변경했을 수 있습니다. 기본적으로 활동을 시작하면 새 인스턴스가 시작됩니다. 또한

: 당신은 당신이 여기

  • context 이후 작성한 내용을 기반으로 새 작업을하지 않기 때문에

    • myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 제거하십시오 당신이가는 이유는 나도 몰라, 아마 Context입니다 ContextWrapper/getBaseContext() 물건의 모든 통해
  • +0

    죄송합니다. 오래된 코드를 새 프로젝트로 옮겨서 문맥을 지적 해 주셔서 감사합니다. myIntent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK)를 제거 할 때; Activity를 시작하려고 할 때 다음 오류가 발생합니다. AndroidRuntimeException : Activity 컨텍스트 외부에서 startActivity()를 호출하려면 FLAG_ACTIVITY_NEW_TASK 플래그가 필요합니다. 이게 니가 원하는거야? 잘 모르겠지만 FLAG_ACTIVITY_NEW_TASK 플래그가 필요하다고 생각하십니까? 또한 내 매니페스트의 아무 곳에서나 launchMode 설정이 없습니다. –

    +0

    @Donal Rafferty : 어디에서 시작 하시겠습니까? – CommonsWare

    +0

    동일한 응용 프로그램 내의 서비스. –

    3
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK 
          | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 
          | Intent.FLAG_ACTIVITY_MULTIPLE_TASK); 
    
    +0

    그것은 나를 위해 일하고있다. –

    관련 문제