Android 在WallperManager.setBitmap(位图)中释放

Android 在WallperManager.setBitmap(位图)中释放,android,bitmapfactory,android-bitmap,android-wallpaper,Android,Bitmapfactory,Android Bitmap,Android Wallpaper,我正在尝试使用小部件更改壁纸。 我使用以下代码来实现这一点: 但是每次执行代码时都会有一定的延迟 有没有办法避免这种延迟 ... WallpaperManager wallpaperManager = WallpaperManager.getInstance (context); Bitmap bitmap = BitmapFactory.decodeStream (new FileInputStream (file)); //here @file is fetched from a phon

我正在尝试使用小部件更改壁纸。 我使用以下代码来实现这一点: 但是每次执行代码时都会有一定的延迟

有没有办法避免这种延迟

...
WallpaperManager wallpaperManager = WallpaperManager.getInstance (context);
Bitmap bitmap = BitmapFactory.decodeStream (new FileInputStream (file));

//here @file is fetched from a phone storage

wallpaperManager.setBitmap (bitmap);
...

我认为有四个选项可能会有所帮助:

  • 在将位图保存到文件之前,请减小位图的大小
  • 预加载位图(好的,如果可能的话)
  • 所有这些都是异步的
  • 在加载位图之前,请确保堆尽可能为空。如果android在解码一个大位图时不得不释放堆,那么它会明显减慢速度

  • 是的,更快的CPU+更快的设备内存应该会有所帮助,说真的,这总是需要一些时间。。。这真的是很长时间吗?用什么设备?位图的大小是多少(就尺寸而言,而不是磁盘大小),解码流或setBitmap需要多长时间?并非市场上的每一部手机都满足这一要求,因为我正在开发一个应用程序,我希望代码速度更快。有没有其他方法可以做到这一点。我不这么认为。。。你唯一能做得更好的事情就是在不同的线程上解码(也可以在那里使用setBitmap,但我不确定这个调用是否不需要UI线程)(简单线程或AsyncTask,如果它需要返回UI线程)它对延迟没有帮助,但对应用程序的响应有帮助。。。您是否收到任何ANR报告?好的,我将尝试使用不同的方法。以下是手机的规格:索尼Xperia Z Ultra 2 GB RAM芯片组-高通MSM8274或MSM8974 Snapdragon 800 CPU-四核2.2 GHz Krait 400 Gpu-肾上腺330,但延迟超出预期,如果您有任何不同的方法,请告诉我。grrr,定义比预期更长的位图以及位图的宽度和高度。。。(1秒?2秒?超过3秒?)