안드로이드 개발 질문/답변
(글 수 45,052)
핸드폰을 켜자마자 자동으로 서비스에서 쓰레드를 이용해서 확인하는 방법인데
로그켓으로 확인하기전에 이루어지는 작업이라서
토스트로 확인하려고 했는데 . 스레드까지는 만들어졌고
Run 으로 실행이 안되네요 ..
왜이런걸까요 ?
쓰레드
private volatile Thread runner;
private Runnable backgrounSendData = new Runnable()
{
public void run()
{
try {
Thread.sleep(500);
mainThread();
} catch (Exception e) {
// TODO: handle exception
}
}
};
public synchronized void startThread() {
Toast.makeText(getApplicationContext(), "스타트스레드", Toast.LENGTH_SHORT)
.show();
if (runner == null) {
runner = new Thread(null, backgrounSendData, "send_data");
runner.start();
Toast.makeText(getApplicationContext(), "스타트 밑", Toast.LENGTH_SHORT)
.show();
}
}
쓰레드
public synchronized void stopThread() {
Toast.makeText(getApplicationContext(), "스탑 스레드", Toast.LENGTH_SHORT)
.show();
if (runner != null) {
Thread moribund = runner;
runner = null;
moribund.interrupt();
}
}
쓰레드
public void mainThread() {
while(true)
{
Toast.makeText(getApplicationContext(), "아놔 떠라 샹", Toast.LENGTH_SHORT)
.show();
}
/*while (Thread.currentThread() == runner)
{
try {
Toast.makeText(getApplicationContext(), "어류 오류", Toast.LENGTH_SHORT)
.show();
} catch (Exception e) {
// TODO: handle exception
}
// do stuff which can be
// interrupted if necessary
}*/
}



Toast를 뛰우기 위해서는 UI Thread에서 해야하는데요... 대충 아래처럼 하시는 방법도 있고, 핸들러로 처리하셔도 되고요...
private Runnable backgrounSendData = new Runnable()
{
public void run()
{
try {
Thread.sleep(500);
runOnUiThread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
mainThread();
}
});
} catch (Exception e) {
}
}
};