在安卓系统中设置壁纸刷新

5
我正在尝试更改当前用户的壁纸。我已经设置了set_wallpaper权限并且它是有效的。但是,当我更改壁纸时,我必须等待约15秒才能看到壁纸更改。
这很奇怪,因为如果我检查锁定屏幕,它已经更改了。
以下是我的代码:
 public static void setWallpaper(final Context context, final Bitmap image){
        Thread thread = new Thread() {
            @Override
            public void run() {
                WallpaperManager wallpaperManager = WallpaperManager.getInstance(context.getApplicationContext());
                try {
                    if(image != null){
                        wallpaperManager.setBitmap(image);
                    }
                } catch (IOException ignored) {}
            }
        };

        thread.start();
}

我使用的是Android 6操作系统。 非常感谢您的帮助。


这个方法 "refreshWallpaper(Context)" 是什么? - Arthur Attout
这只是一个测试,强制壁纸刷新,我在论坛上看到过。但是不用担心它,我已经尝试过使用和不使用该方法,结果都一样。 - Ananta
看这里,你已经有了一个刷新功能,但也许它可以让工作更好 https://stackoverflow.com/a/22932875/3117650 - Canato
谢谢您的回复,我会尝试并告诉您它是否有效。但它看起来非常类似于我的函数(refreshWallpaper):https://github.com/jess-bart/PictoThemo/blob/master/app/src/main/java/com/jessy_barthelemy/pictothemo/Helpers/ApplicationHelper.java - Ananta
2个回答

0

为什么你要使用线程来实现这个目的?

移除线程,直接在主线程上运行你的代码,看看你的代码是否能够正确地立即更改用户的壁纸!


它并没有改变任何东西。我还是有同样的延迟。 - Ananta

-1

值得深入研究WallpaperManagers的setBitmap方法和内部回调(ln 1055,ln 1713)ref

我不完全确定整个代码是如何工作的,也不认为这真的有助于解决问题,但它可能会给你一些提示。

查看此question以获取类似问题的解决方案


谢谢提供链接,但是类似的问题仍未得到解答。 - Ananta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接