Service에서 Intent를 이용해 Activity를 띄우려고 한다.
startActivity(Intent intent) 매서드를 이용해서 Activity를 call하면
...FLAG_ACTIVITY_NEW_TASK... 의 에러가 출력된다.
왜냐하면 Activity는 스택형태로 쌓이게되는데 Activity가 아닌곳인 Service상에서 Activity를 불르면 어느 task에 Activity를 추가할지 모르기때문에 오류가 발생한다.
해결방법은 두 가지가 있다.
1. Flag를 추가하기
2. PendingIntent 사용하기
1. Flag를 추가하기
보통
줄1] Intent intent = new Intent(Context context, Class class);
줄2] startActivity(intent);
를 써서 Activty를 call한다. 이렇게 쓸 때 오류가 발생하는데 아래와 같이 한줄을 추가한다.
줄1] Intent intent = new Intent(Context context, Class class);
줄2] intent.addFlag(Intent.FLAG_ACTIVTY_NEW_TASK);
줄3] startActivity(intent);
intent에 FLAG_ACTIVTY_NEW_TASK 플레그를 추가하면 에러를 없앨 수 있다.
flag는 설명과 같이 history stack의 new stack에서 actiivty가 시작되게 설정시킨다.
2. PendingIntent 사용하기
보통
줄1] Intent intent = new Intent(Context context, Class class);
줄2] startActivity(intent);
를 써서 Activty를 call한다. 여기서 startActivty말고 아래와 같이 PendingIntent를 사용해보자
줄1] Intent intent = new Intent(Context context, Class class);
줄2] PendingIntent pendingIntent = PendingIntent.getActivity(Context context, 0, intent, 0);
줄3] try{ pendingIntent.send(); } catch(Exception e) { //익셉션 };
를 써서 Activty를 call한다. 이렇게 쓸 때 오류가 발생하는데 아래와 같이 한줄을 추가한다.
'소프트웨어 > Android/Java/Ndk' 카테고리의 다른 글
Android] XML상에서 Layout 둥근모서리 적용하기 (0) | 2013.12.22 |
---|---|
Android] ConnectivityManager를 이용한 3g 4g wibro wifi 통신 체크 (0) | 2013.12.20 |
Android] Service가 Kill당했을때 Activity의 복구 (0) | 2013.12.20 |
Android] 위젯 만들기 2 - 클릭이벤트 먹이기 (0) | 2013.12.14 |
Android] 위젯 만들기 - 1. 위젯 껍데기 만들기 (0) | 2013.12.14 |
java] ArrayList와 Hashmap검색속도관련 (1) | 2013.12.12 |
Android] LiswView의 성능향상을 위한 HolderPattern (0) | 2013.12.06 |