一段时间后如何自动更改设备墙纸?

时间:2019-10-18 12:30:23

标签: java android multithreading android-recyclerview wallpapermanager

我正在使用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输入到Alert对话框并按PositiveButton(“确定”)时,应用程序用户界面帮助和错误出现在屏幕上是ANR(应用程序无响应)。

我也使用AsynckTask,但是由于Thread.Sleep()连续运行,因此出现了同样的错误。我也使用TimeUnit.Second.Sleep但条件相同。

因此,有一种方法或任何方法可以在用户输入时间后自动更改墙纸。

请分享您的代码,我将非常感谢您

0 个答案:

没有答案