백그라운드에서 서비스를 동작시키면서 스레드로 카운트를 세고 있구요 다른 액티비티의 UI를 변경 하기 위해 메인 핸들러에 메시지를 보내려고 하고 있는데요 코드상에 어떤식으로 작성해야 되는지 난감합니다...
---------------------------------------------------------------------------------- 백그라운드 동작 서비스 입니다.
public class CallTimeCount extends Service implements Runnable {
public void run() {
while (isRun) {
count++;
Log.w("TAG","run()>>> count : " + count);
if(NoteDuringCall.isActive){
Log.w("TAG","count : " + count);
Message message = note.nHandler.obtainMessage(0); //이부분에서 다른 액티비티의 핸들러에 메시지를 보내는데요
message.arg1 = count;
note.nHandler.sendMessage(message);
}
try {
Thread.sleep(1000);
} catch (Exception e) {
Log.w("TAG", e.getMessage());
}
}
}
----------------------------------------------------------------------------------
public class NoteDuringCall extends Activity {
NHandler nHandler;
// 메시지를 받을 핸들러입니다. 이곳에 선언한 이유는 메인 UI를 변경하기 위해서 였는데요 현재 상태에서는 null이 나구요 그러는게 당연한데 저걸 null이 안나게 할수 있는 방법을 찾고있습니다.. 이곳에서 핸들러 자체를 생성해버리면 아래쪽의 callTimeCount 를 찾을수 없어서 애러가 납니다.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...............
callTimeCount = (TextView) findViewById(R.id.callTimeCount);
// 변경시킬 UI입니다. 단순히 서비스에서 세고 있는 카운트를 보여주기 위한코드입니다.
nHandler = new NHandler();
class NHandler extends Handler { //내부클래스로 핸들러를 구현했습니다.
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
String count = Integer.toString(msg.arg1);
callTimeCount.setText(count);
break;
}
}
}
}