마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

액티비티가 중복 실행되면서 충돌나는현상 막는 방법이 있을까요?

0 추천

유니티에 안드로이드 플러그인을 만들어서 붙인 다음에 실행하고 있습니다.

public class MainActivity extends UnityPlayerActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Toast.makeText(this, "MainActivity. - onCreate", Toast.LENGTH_LONG).show();
    }
}

이런 식으로 onCreate 가 호출되면 토스트로 MainActivity. - onCreate 를 출력하고 있는데요.

앱을 설치한 다음에 완료/열기 버튼이 나왔을때 열기를 눌러서 앱을 실행하면

onCreate 에서 토스트를 띄웁니다.

홈버튼을 눌러서 앱을 종료하지 않고 나온 다음에 설치된 앱 아이콘을 누르면

다시 onCreate 에 있는 토스트가 뜨면서 충돌이 나면서 종료되고, 재실행 됩니다.

 

 

그리고 안드로이드서비스 클래스에서 이미지를 띄운 다음에 이미지를 클릭하면 액티비티가 실행되게 코드를 만들었는데요.

Intent dialogIntent = new Intent(instence, MainActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(dialogIntent);

이런 식으로 실행하는데 역시 onCreate 의 토스트가 뜨면서 충돌이 납니다.

 

onCreate 에서 이미 같은 액티비티가 실행중이면 실행중인 액티비티를 활성화 하고 충돌나지 않게 종료시키는 방법이 있을까요?

사시 (340 포인트) 님이 2016년 11월 23일 질문

1개의 답변

0 추천
 
채택된 답변

flag를 FLAG_ACTIVITY_NEW_TASK로 하신 이유 있나요?

없다면

http://theeye.pe.kr/archives/1298

 FLAG_ACTIVITY_SINGLE_TOP로 하면 될겁니다. 

익명사용자 님이 2016년 11월 23일 답변
사시님이 2016년 11월 23일 채택됨
답글 감사합니다.
FLAG_ACTIVITY_NEW_TASK 이거는 그냥 인터넷에 나온걸 보고 한거고요.;;
서비스에서 액티비티를 실행시키는것도 그렇지만
앱 설치하고 실행 할때도 문제라서요.

AndroidManifest.xml 에서 액티비티 옵션으로
android:launchMode="singleInstance"
android:excludeFromRecents="true"
android:taskAffinity=""
를 넣어서 해결 했습니다.
...