Я хочу создать приложение, которое будет менять обои Android-устройства через определенные промежутки времени, скажем, каждый час или около того. В настоящее время в моем коде я запускаю службу и использую объект Timer. Объект Timer будет вызываться через регулярные промежутки времени и менять обои.Android-приложение для изменения обоев с регулярными интервалами с использованием таймера
Это код, который я использую в настоящее время. Обои меняют только один раз, а не после этого. Пожалуйста, дайте мне знать, что мне делать?
public class Wallpaper extends Service {
Timer mytimer;
int interval=60000;
Drawable drawable;
WallpaperManager wpm;
int prev=1;
@Override
public void onCreate() {
super.onCreate();
mytimer=new Timer();
wpm=WallpaperManager.getInstance(Wallpaper.this);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mytimer.schedule(new TimerTask() {
@Override
public void run() {
if(prev==1){
drawable = getResources().getDrawable(R.drawable.two);
prev=2;
}
else if(prev==2){
drawable = getResources().getDrawable(R.drawable.three);
prev=3;
}
else{
drawable = getResources().getDrawable(R.drawable.one);
prev=1;
}
Bitmap wallpaper=((BitmapDrawable)drawable).getBitmap();
try {
wpm.setBitmap(wallpaper);
} catch (IOException e) {
e.printStackTrace();
}
}
}, interval);
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
}
Кроме того, нужно ли использовать AlarmManager или Handler для достижения этого? Я совершенно новый для Android и немного смущен.
Установить 0 для задержки для немедленного запуска. :) – Calvin
Спасибо .. кажется, сейчас работает. Существует еще один метод myTimer.schedule() с двумя аргументами, так что это не дало мне ошибку. Во всяком случае, я рад, что мне не нужно использовать Handler и т. Д. – ambit
Yup! Использование только двух аргументов делает одноразовый таймер. Иногда полезно! –