【问题标题】:Dealy in wallpaperManager.setBitmap (bitmap)处理墙纸管理器.setBitmap(位图)
【发布时间】:2015-02-23 20:54:19
【问题描述】:

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

有什么办法可以避免这种延迟

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

//here @file is fetched from a phone storage

wallpaperManager.setBitmap (bitmap);
...

【问题讨论】:

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

标签: android bitmapfactory android-bitmap android-wallpaper


【解决方案1】:

我看到了四个可能有帮助的选项:

  1. 在将位图保存到文件之前减小其大小
  2. 预加载位图(如果可能的话)
  3. 执行所有这些异步操作
  4. 在加载位图之前,请确保您的堆尽可能为空。如果 android 在解码大位图时必须释放堆,它会明显变慢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多