从 Android 4.0.2 升级到 4.1.2 后,我自己创建的应用程序不再工作了。
拍摄图片时,它应该根据回调数据创建位图。在位图命令期间,我收到内存不足错误。
我在谷歌问题中发现了类似的问题: http ://code.google.com/p/android/issues/detail?id=42516
我刚刚遇到这个问题并做了一些实验,我的结论是:
- 你不能在 XML 中设置任何可绘制或颜色并使用 setContentView 应用它,这样做会泄漏 Activity
修复:不要使用 setContentView 而是使用 LayoutInflater inflater = LayoutInflater.from(getApplicationContext());
inflater.inflate(R.layout.activity_frontpage, (ViewGroup) findViewById(android.R.id.content), true);
所以我尝试了修复,但它对我不起作用。屏幕保持黑色,我收到相机错误 -1 异常。
这是我的回调:
public class ScanCallback implements PictureCallback {
MainActivity mainActivity;
private boolean savePicture = false;
public ScanCallback(MainActivity mainActivity) {
this.mainActivity = mainActivity;
}
@Override
public void onPictureTaken(byte[] data, Camera camera) {
Bitmap bitmapPicture = BitmapFactory.decodeByteArray(data, 0,
data.length);
Bitmap redrawn = bitmapPicture.copy(bitmapPicture.getConfig(), true);
mainActivity.mCamera.startPreview();
MainActivity.waitForCallback = false;
}
}
还有我的主要Activity.onCreate:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
mPreview = new CameraView(this);
mainActivity = this;
scanCallback = new ScanCallback();
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
// setContentView(mPreview);
LayoutInflater inflater = LayoutInflater.from(getApplicationContext());
inflater.inflate(R.layout.activity_main,
// (ViewGroup) findViewById(android.R.id.content), true);
setProgressBarIndeterminateVisibility(false);
}
就是这样。如果您想查看任何其他代码,请告诉我。
任何想法如何让修复程序运行?或者如何首先避免错误?