我有一项服务使用我正在改变Android壁纸。我正在将图像路径传递给服务,然后使用以下代码将图像设置为墙纸:
@Override
public void run() {
try {
final String imagePath[] = mSelectedImgPath.split(",");
while (true) {
for (int i = 0; i < imagePath.length; i++) {
bitmap = BitmapFactory.decodeFile(imagePath[i]);
this.setWallpaper(bitmap);
Thread.sleep(1000 * time);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
我收到以下错误:
01-25 15:59:12.410: E/AndroidRuntime(1702): FATAL EXCEPTION: Thread-149
01-25 15:59:12.410: E/AndroidRuntime(1702): java.lang.OutOfMemoryError
01-25 15:59:12.410: E/AndroidRuntime(1702): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
01-25 15:59:12.410: E/AndroidRuntime(1702): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:493)
01-25 15:59:12.410: E/AndroidRuntime(1702): at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:299)
01-25 15:59:12.410: E/AndroidRuntime(1702): at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:324)
01-25 15:59:12.410: E/AndroidRuntime(1702): at com.wallpaper.demo.WallpaperChangeService.run(WallpaperChangeService.java:55)
01-25 15:59:12.410: E/AndroidRuntime(1702): at java.lang.Thread.run(Thread.java:856)
由于
答案 0 :(得分:0)
如果您在模拟器中运行程序,请增加“VM堆”。 转到avd管理器并单击你的android模拟器并增加VM堆的大小。
答案 1 :(得分:0)
因为您的图片尺寸很大,请尝试缩放图片。
参考此Strange out of memory issue while loading an image to a Bitmap object
答案 2 :(得分:0)
使用
bitmap.recycle();
进入循环后
for (int i = 0; i < imagePath.length; i++) {
bitmap.recycle();
bitmap = BitmapFactory.decodeFile(imagePath[i]);
this.setWallpaper(bitmap);
Thread.sleep(1000 * time);
}