Android 프로젝트에서 쓰레드를 사용해야합니다. 때때로, 그것은 핵심적으로 효과가 있지만 때로는 그렇지 않습니다. 스레드가 끝나기 전에 시작되지 않고 (SendToServer() 메서드를 호출하지 않음) 시작하지만 다른 함수로 갑자기 복귀합니다 (반환 된 값이 반환 됨).안드로이드 쓰레드가 시작되지 않는 경우가 있음
참고 : 영향을받은 값이 0보다 크면 조건을 제공하고 if 문으로 이동합니다.
다음은 내 코드 샘플입니다. 대신 스레드와 변수를 (업데이트하고 해당), 당신은 AsyncTasks을 사용할 수 있습니다 사용
public static Boolean MyUpdateFunction(MyObject myobject){
Boolean updated=false;
//Code for updating local database
int affected= SqliteDb.update(....);
if(affected>0)
{
//Send updated data to server
//For this I must use Thread(I can't use AsyncThread)
updated=true;
SendToServer();
}
return updated;
}
public static void SendToServer()
{
try{
;
Thread th=new Thread(new Runnable() {
public void run() {
try {
//Create data and send it to server
//.......
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
th.start();
th.join();
}
catch(SQLException e)
{
Toast.makeText(myContext,"ERROR: "+e.getMessage(), Toast.LENGTH_LONG).show();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
백그라운드 작업을 위해 Android SDK에서 제공하는 AsyncTask를 사용할 수도 있습니다. – JoxTraex
'th.start(); th.join();'- 왜 쓰레드를 사용 하는가? – Howard
어떤 이유로 AsyncTaks를 사용할 수 없습니다. 프록시 클래스를 생성하는 라이브러리를 사용하며 AsyncTask를 지원하지 않으므로 Thread를 사용해야합니다. – essbek