여러개의 액티비티가 있고요.
첫번째 메인 액티비티에서 백그라운드 쓰레드 를 돌릴 꺼입니다.
그리고 핸들러를 통해서 액티비티에 통보를 하구요. 그 액티비티는 메시지를 받으면 TextView의 내용을 바꿀 생각이구요.
백그라운드 스레드가 실행이 되면
run()에서는 while(true)을 돌면서 변수 coun=0 에서 1씩 증가 시킬려구요.
그리고 count를 1씩 증가시키고 thread.sleep(5000); 하고 다시 whlie문을 돌면서 1씩 증가시킵니다.
public void run(){
while(true){
count++;
try {
Thread.sleep(2000);
} catch (Exception e) {
}
}
}
이런 식으로요
그리고 while 문에서 count 값이 특정 값( count == 10) 되면 핸들러를 통해 메시지를 보낼 꺼구요.
메인 액티비티(MainActivity)가 실행 되면 이 스레드를 실행 시킬것입니다.( onCreate 콜백 함수에서요 스레드를star() 시킬 것입니다.)
메인 액티비티를 실행시키고 곧바로 2초 있다가 다른 액티비( BActivity)로 이동 할 것입니다.
그리고 여기서 백그라운드 스레드에서 count 값이 10이 되었을때 받는 메시지를 체크해서
BActivity에 있는 TextView의 값을 바꿀려고 하는데
어떤 식으로 해야 하나요?
지금 스레드를 공부하는 중인데..
이걸 어떻게 코딩해야 하는지 감이 안잡히네요




다른 Activity에 자원에 접근하는것은 그리 좋은 구조는 아닌것 같지만 질문 의도대로라면 아래와 같이 구현할수도 있겠습니다.
메모장으로 작성해 테스트는 해보지 않았습니다.
/** * MainActivity */ public void run(){ while(true){ if(count++ == 10){ Message message = BActivity.sHandler.obtainMessage(0); Bundle bundle = new Bundle(); bundle.putString("TestKey", "Have a nice day!"); message.setData(bundle); BActivity.sHandler.sendMessage(message); } try{ Thread.sleep(5000); } catch(Exception e){ } } } /** * BActivity */ public class BActivity extends Activity{ private static TextView sTextView = null; public static final Handler sHandler = new Handler(){ @Override public void handleMessage(Message msg) { switch(msg.what){ case 0 : if( sTextView == null ){ return; } String text = msg.getData().getString("TestKey"); sTextView.setText( text ); break; } } }; }