CAFE

안드로이드 질문

Activity launchmode와 다른 activity 강제종료 방법 문의드립니다.

작성자몽솅이|작성시간13.09.30|조회수541 목록 댓글 4

안녕하세요.

Activity를 사용하는 것에 있어 해결이 안되는 부분이 있어 조언을 구하고자 합니다.

 

특정 application에 A activity와 B activity가 있습니다.

A Activity의 launchmode는 메세지의 첨부 등 여러 앱에서 접근가능해야해서 standard로 되어 있고

B Activity는 A와 동일기능이지만 심플하게 구성되고 미니팝업창처럼 다른 activity의 top에서 실행이 되어야해서 singletask로 구현된 상태입니다.

그런데 A와 B Activiy는 서로 동시에 실행할 수는 없습니다.

A에서 B실행시(또는 B->A호출시) A 또는 B가 onPause가 되면 모든게 해결됩니다만 실제로 호출되지 않아 문제가 발생합니다.

A,B Activity를 모두 singleTask로 설정시 이 문제는 해결되나 메세지첨부에서 A activity실행시 첨부가 되지 않는 다른 문제가 발생합니다.

 

1. B Activity 실행중 A 실행시 B activity를 강제 종료하도록 할 수 있는지요?

(broadcast로 intent를 날려도 intent를 늦게 받아서 onPause는 늦게 실행됩니다.)

 

2. 두 activity모두 singleTask로 설정후 메세지첨부에서 A activity 실행시 동적으로 standard형태로 intent를 줄 수 있는지요?

 

조언부탁드립니다.

감사합니다.

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 작성자슈퍼성근 | 작성시간 13.10.02 세부적인 환경을 알 수 없어 1차원 적인 답변만 드릴수 있겠네요.

    1. 가능합니다. 아마도 B가 A액티비티를 실행했을때만 종료하고 싶으시다면
    A에서 getCallingActivity() 함수를 통해 자신을 실행한 Activity의 ComponentName을 알 수 있으니
    자신을 실행한 종료시킬 수 있겠네요.

    2. 동적으로 standard intent를 줄 수는 없습니다.

    상황을 보면 매우 복잡하네요.
    전후 사정을 모르면 정확한 답은 드릴 수 없습니다. ^^; 이해 부탁드립니다.
  • 답댓글 작성자몽솅이 작성자 본인 여부 작성자 | 작성시간 13.10.02 네 세부적인 환경을 알려드리지 못해 어느정도 예상은 했습니다.^^;;
    1의 경우는 A->B 직접실행이 아니라 B는 launcher나 다른 app에서 접근입니다.
    (즉 A->B(B->A) 직접 호출하진 않습니다.)
    에고 초보라 어렵네요..
  • 작성자슈퍼성근 | 작성시간 13.10.02 A,B는 서로 배타적인 관계인가 보군요.
    A가 뜬 상태에서 B가 뜨면 A가 종료되어야 하고...뭐그런..

    B가 구동될때 A 액티비티를 종료하시려면
    A 액티비티의 인스턴스를 가지고 있으셔야 겠네요.
    즉 A.finish() 를 사용해야 하니까요.

    그러므로 A 액티비티가 onCreate 에서 자신의 객체를
    static 변수 혹은 Application 객체 멤버변수에 담아 두고
    onDestory에서는 제거하는 과정이 있어야 겠네요.

    그 다음 B 액티비티에서 A 액티비티를 참조하여 finish 시키면 됩니다.
  • 작성자슈퍼성근 | 작성시간 13.10.02 만일 A Activity에서 static 으로 담을 때에는

    public static Activity sAActivity = null;

    onCreate()
    {
    sAActivity = this;

    이렇게 하시면 될 것이고

    Application 객체로 처리하시려면 ...
    제 강좌중 http://cafe.daum.net/superdroid/aCJk/3 을 참조하시면 되겠습니다.
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼