제목과 같이

service로 백그라운드에서 2초마다 wallpaper를 바꾸는 서버로부터 다운받아 바꿔주는 기능을 개발중인데 

thread.sleep(2000)을 2초를 주고 다른 액션은 없는데,

2초마다 바꾸는 것이 아니라 꽤 시간이 걸립니다.


똑같은 코드를 액티비티에넣고 실행했을때에는 딱 2초마다 바꾸는 것으로보아 인터넷 속도문제는 아닌것같고,

뭔가 다른 작업이 일어나고있는거같은데...원인을 모르겠습니다


코드는 다음과 같습니다


service를 호출하는 액티비티 코드


public class AdWallTestActivity extends Activity {


public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Intent myIntent = new Intent(this, MyService.class);

startService(myIntent);

}//end create

protected void onStart() {

super.onStart();

}

}



wallpaper를 다운받아 바꿔주는 서비스 코드


public class MyService extends Service implements Runnable {


public static final String TAG = "MyService";

WallpaperManager wallpaperManager;

private int count = 0;

String imageurl[] = new String[5];

public void onCreate() {

super.onCreate();

wallpaperManager=WallpaperManager.getInstance(getApplicationContext());


}

public void onStart(Intent intent, int startId) {

super.onStart(intent, startId);

Thread myThread = new Thread(this);

myThread.start();

}


Drawable LoadImageFromWebOperations(String url) {

Drawable d = null;

InputStream is = null;

return d;

}

public void run() {

while(true) {

for(int i= 0; i< 5 ; i++) {

Drawable drawable = LoadImageFromWebOperations(imageurl[i]);

Log.d("my log", String.valueOf(i));

try {

wallpaperManager.setBitmap(bitmap);

} catch (IOException e) {

e.printStackTrace();

}

try {

Thread.sleep(2000);

} catch (InterruptedException e) {

e.printStackTrace();

}

}//end for

}//end while

}

@Override

public IBinder onBind(Intent arg0) {

// TODO Auto-generated method stub

return null;

}


}


원인이 뭘까요? wallpaper 화면 갱신 문제인가 싶어서

실제로 로그찍어봐도 로그찍히는 속도도 2초보다 훨씬느립니다 한 8초?

thread 대신에 asynctask 가 더 나으려나요?

고수님들 알려주시면 감사하겠습니다.