제목과 같이
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 가 더 나으려나요?
고수님들 알려주시면 감사하겠습니다.




음...제가 위에코드를 다 읽어보진 않았지만 ..
.. ....코딩하신 푸로그램이 빛의속도로 작동하지 않을테니깐.... 쉬는시간이 2000밀리섹 해두셨지만 그위 코드가 실행되는 시간을 생각하면..... 위코드실행시간+2초 아닐까요?.. 작동시간은 기계마다 다르겠네요.,..해당 URL에서 파일을 스트리밍으로 긁어오는 시간...