서적에 관한 질문 및 오류 등을 문의 할 수 있으며, 저자로부터 직접 답변을 받을 수 있습니다.
안녕하세요?
자바가 서툴어 UI는 자바에서 처리하고, 나머지 수행은 네이티브에서 처리하고자 하였는데 때마침
"네이티브 스레드로 자바 콜백 만들기" 예제를 보고 구현을 해봤는데,
콜백호출된 자바 함수에서 UI를 컨트롤하면 어플이 죽어버리는 현상이 발생해서 질문드립니다.
구현 코드는 예제에서 몇가지 추가하여 테스트 해봤습니다.
xml
<LinearLayout
android:id="@+id/page1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
java
static View mPage1;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPage1 = findViewById(R.id.page1);
}
public static void callback(int a){
Log.e("Java", "callback : " + a");
mPage1.setVisibility(View.INVISIBLE);
}
callback함수에서 mPage1.setVisibility(View.INVISIBLE);를 호출하면 어플이 죽어버리네요.. 이것 저것 해봤는데, 딱히 좋은 수가 생각나지 않아 질문드립니다.. 감사합니다
한참을 헤멘끝에 자문자답입니다...
안드로이드에서 UI스레드가 아닌 다른 스레드에서 UI 컨트롤을 못하게 되있다고 하더군요...
원인출처
http://blog.naver.com/PostView.nhn?blogId=serimo&logNo=50151727013
해결출처
http://chen592969029.iteye.com/blog/1467237
안드로이드 프로그래밍 정복 1권 스레드부분 에도 나오네여..