총 게시물 38,899건, 최근 1 건 안내 RSS 글쓰기
이전글  다음글  목록 글쓰기
[안드로이드]

프로세스 진행상태 다른 화면에서 표시하기

글쓴이 : 기모기 날짜 : 2017-11-28 (화) 15:22 조회 : 645
글주소 : http://www.androidside.com/B49/168888
 
  행복대출 포인트론
직장인, 사업자, 주부, 담보, 대환, 무직자 대출여부확인, 높은승인률, 간편절차
www.point-loan.com
  꾹이 리페어 강남역 5번출구
아이패드 정품 액정수리, 프로10.5, 프로9.7, 미니4, 뉴9.7, 카드결제
www.qqooks.com
  삼성역아이폰수리 아이폰센터
삼성역위치 도보3분, 현대백화점 맞은편, 아이폰/아이패드 액정침수전원배터리하우징
blog.naver.com/lvcoka777
신청하기


안드로이드, 자바 그리고 다양한 질문에 대해 성실히 답해드립니다. Q&A Jang

안녕하세요.

메인화면에서 로그인 시도하면 몇가지 인증절차를 내부적으로 진행하는데,
진행 프로세스에 따라 프로그래스 화면에 텍스트로 표현하고자 합니다.

메인액티비티 : 로그인 시도 -> 프로그래스 액티비티 실행
메인액티비티 : 인증절차 1 -> 프로그래스 액티비티의 텍스트뷰에 "인증절차 1 진행중입니다." 표시
.......
메인액티비티 : 인증절차 N -> 프로그래스 액티비티의 텍스트뷰에 "인증절차 N 진행중입니다." 표시
인증완료되면 메뉴 프래그먼트 실행

대략적으로 이런 프로세스 인데..

문제는 프로그래스 액티비티의 텍스트뷰를 컨트롤 잘 안되고 있습니다.

방법 1.

Handler handler = new Handler();

new Thread(new Runnable() {
public void run() {
handler.post(new Runnable() {
public void run() {
messageTxt.setText(getString(R.string.splash_message));
}
});
}
}).start();
방법 2.
Thread readyThread = new Thread(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
messageTxt.setText(getString(R.string.splash_message));
}
});
}
});
방법 3.
프로그래스 액티비티에 함수 만들어서 메인액티비티에서 호출 했는데도 되질 않더군요..

어떤 방식으로 처리하면 문제없이 적용될지 조언 부탁 드립니다.

감사합니다.





질문자가 자신의 포인트 10 점을 걸었습니다.
답변하시면 포인트 2을, 답변이 채택되면 포인트 8을 드립니다.

질문답변 게시판에서 궁금한 사항을 해결하셨다면, 애써 답변해주신 분께 잘 되었다고 따뜻한 댓글 한마디 남겨주세요.
그리고 답변해주신 분의 글을 '추천' 해주세요.
추천받으신 분에게 1포인트가, 추천하신 분에게도 1포인트가 적립됩니다. ^^

OSKiller 2017-11-28 (화) 15:33
둘다 안될만한 방법은 아닌것 같은데요?
어떻게 잘 안되는것인지요?
댓글주소 추천 0 반대 0
     
     
기모기 2017-11-28 (화) 15:41
[@OSKiller] 둘다 앱이 죽거나 Exception은 발생하지 않고,
uithread를 사용할 경우는 일정시간동안 화면이 검게 변합니다.
monitoring 화면에 로그도 정상적으로 찍힙니다.

핸들러를 쓸경우는 화면도 잘 실행되는데 텍스트가 변하질 않습니다.

로그로 setText의 대상이 되는 string 변수를 찍으면 정상적으로 나오고 있구요..
댓글주소 추천 0 반대 0
에찌 2017-11-28 (화) 16:38
호출시점부터 확인하심이..onResume 이후로 하셧나요?
댓글주소 추천 0 반대 0
     
     
기모기 2017-11-28 (화) 16:55
[@에찌] super.onReusme(); 이후에 호출하고 있습니다....
댓글주소 추천 0 반대 0
허접샴푸 2017-11-30 (목) 00:36
new Thread(new Runnable() {

이렇게 다 설정하셨는 데 
new Thread()로 바꿔주세요. Runnable을 없애주세요.
댓글주소 추천 0 반대 0
은빛파도 2017-11-30 (목) 11:14
UI 쓰레드 안에서

messageTxt.post(new Runnable() {
                    @Override
                    public void run() {
                        messageTxt.setText(getString(R.string.splash_message));
                    }
                });

일케 해보세요
댓글주소 추천 0 반대 0
기모기 2017-12-14 (목) 09:51
답변이 늦었습니다..
이래 저래 바꾸다 결국 되긴하는데... 정확히 원인이 뭐였는지는 모르겠네요...

답변주신분들께 감사드립니다.

Thread readyThread = new Thread(new Runnable() {
@Override
public void run() {
while (MainActivity.splashFlag) {
runOnUiThread(new Runnable() {
@Override
public void run() {
messageTxt.setText(MainActivity.process_message);
}
});

try {
sleep(500);
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "Splash Error!", Toast.LENGTH_LONG).show();
break;
}
}

finish();
}
});

readyThread.start();
댓글주소 추천 0 반대 0
이전글  다음글  목록 글쓰기

 


Copyright ⓒ www.androidside.com. All rights reserved.
채팅 권한: 글쓰기 1개
2레벨 이상만 대화 가능
공개 채팅: 평일 !(9시 ~ 17시),토,일
안사2 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기