Я устанавливаю обои с помощью WallpaperManager, они хорошо работают, когда я устанавливаю один фоновый рисунок нажатием кнопки.
Но главная особенность заключается в том, что: когда пользователь вводит время из AlertDialog, обои должны меняться через один, в соответствии с временем ввода пользователя. Когда список обоев или массив заканчиваются, снова запускайте обои с 1.
- Сначала я получаю все пути обоев в ArrayList.
- Запуск цикла в соответствии с длиной ArrayList.
- Когда цикл запускается впервые, обои устанавливаются, и я вызываю Thread.Sleep (5 * 1000)
- Таким образом, цикл запускаетсявторой раз через 5 сек и обои меняются автоматически.
Итак, проблема в том, что когда пользователь вводит время из диалогового окна оповещения
//Below is my code I write by hand, actual code is in project
for(int i = 0; i<listofWall.length; i++){
Bitmap bitmap = here i get bitmap from ListOfWallpaper(i);
WallpaperManager wm = WallpaperManager.getInstance(getContext());
wm.setBitmap(bitmap);
Thread.sleep(userEnterTimeInSec*1000);
//I do below code for run loop again and again so that wallpaper change
after the end of wallpaper list
if(i==listOfWall.length-1){
i=0;
}
}
Итак, когда я запускаю приложение и ввожу WallPaperTime в диалоговое окно оповещения и нажимаю PositiveButton(«ОК»), справка по пользовательскому интерфейсу приложения и на экране появляется сообщение ANR (приложение не отвечает).
Я также работаю с AsynckTask, но та же ошибка, потому что Thread.Sleep () работает непрерывно. Я также использую TimeUnit.Second.Sleep, но в том же состоянии.
Итак, есть способ или способ, как я могу автоматически менять обои по истечении времени ввода пользователя.
Пожалуйста, поделитесь кодом, я буду вам очень благодарен