그래오늘은이거야

android(안드로이드) UI Thread runOnUiThread Freeze not work (앱) 화면 멈추는 현상 본문

세상 개발/Android

android(안드로이드) UI Thread runOnUiThread Freeze not work (앱) 화면 멈추는 현상

jinhongstar 2019. 8. 19. 15:33
728x90
반응형

안녕하세요 

Dev Leo 입니다.

 

IOS 개발하면 android 개발하려나 진짜 UI 구조 이해하는데 고생이 많네요...

 

와 이게 진짜 1주일을 그냥 날려버린 비싼 자료인데요...

 

처음엔 packet이 잘 못들어오는지알고 다른쪽으로 계속 리버싱 하다가...

물론 그쪽도 문제가 있어서 수정했지만...ㅋㅋ

 

runInUiThread 에 대한 개념 이해...

https://itmining.tistory.com/6

 

Interface Observer를 만들어서 ...

Observer thread 가 계속적인 델리게이트 (handler)?? 라고 해야하나? 

용어가 헷갈리네요 ㅜㅜ 아무튼 call을 하는 상황에서...

 

TextView 에 값을 변경 해주려는데 아래와같이...

runOnUiThread 적용했는데 30분 안쪽으로 화면은 멈춰버렸습니다.

 

android 구조를 이해하고 runOnUiThread 소스를 사용했는데... freeze가 발생되네요

제 생각은 Observer Thread가 실행되면서 runOnUiThread Runnable을 한번더 실행 시키면서  sleep 이 되버리면서 freeze현상이 발생하는것 같습니다

 

private Observer statusObserver = new Observer() {
        @Override
         public void aaaaaaaaa(obj str) {

			//여기에 UI 처리...

        }
}

 

정확한 이유는 아직 조사중 입니다.

자세한 내용을 아시는 분은 댓글좀 남겨주세요!! ㅎㅎ

 

//runOnUiThread 를 사용했을경우...
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
TextView textView = (TextView) findViewById(id);

	if (textView != null) {
		textView.setText(text);

	}
 }
});

 

그래서 아래와 같이 new Thread로 적용하니 문제 없이 UI freeze현상이 발생되지 않습니다.

//new Thread로 작업 변경
new Thread(new Runnable() {
    @Override
     public void run() {
    	TextView textView = (TextView) findViewById(id);
    	if (textView != null) {
     		textView.setText(text);
     	}
  	}
}).start();

 

예전에 stackoverflow에서 즐겨찾기 해놓은 부분 확인 한 후 해결했네요.

 

도움이 된다면 사용하시기바립니다!

 

궁금한 점은 댓글 주세요! 

반응형
Comments