Как я могу изменить обои устройства через некоторое время автоматически? - PullRequest
0 голосов
/ 18 октября 2019

Я устанавливаю обои с помощью WallpaperManager, они хорошо работают, когда я устанавливаю один фоновый рисунок нажатием кнопки.

Но главная особенность заключается в том, что: когда пользователь вводит время из AlertDialog, обои должны меняться через один, в соответствии с временем ввода пользователя. Когда список обоев или массив заканчиваются, снова запускайте обои с 1.

  1. Сначала я получаю все пути обоев в ArrayList.
  2. Запуск цикла в соответствии с длиной ArrayList.
  3. Когда цикл запускается впервые, обои устанавливаются, и я вызываю Thread.Sleep (5 * 1000)
  4. Таким образом, цикл запускаетсявторой раз через 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, но в том же состоянии.

Итак, есть способ или способ, как я могу автоматически менять обои по истечении времени ввода пользователя.

Пожалуйста, поделитесь кодом, я буду вам очень благодарен

...