在我的Activity的onCreate()方法中,我抓住了Activity的布局的最外层的LinearLayout。然后我检查一下手机的方向是什么。如果是肖像,我将LinearLayout的背景图像设置为一个图像;如果它是横向的,我将LinearLayout的背景图像设置为另一个图像。
用户报告说,如果他们多次打开和关闭硬件键盘,应用程序将崩溃。生成的日志在onCreate()调用的setBackgroundResource的内部深处显示OutOfMemoryError(位图大小超过VM预算)错误。
我在这里做错了吗?是否有内置的方法让Android处理这个?
如果有用,日志还会在崩溃上方显示大约2打“意外恢复”。这是用户打开和关闭硬件键盘。
答案 0 :(得分:1)
重写onConfigurationChange()方法,因为布局的更改是使用此方法处理的。
@Override
public void onConfigurationChanged(Configuration newConfig) {
if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE)
{
//change of background
}
else if(newConfig.orientation==Configuration.ORIENTATION_PORTRAIT)
{
//change the background
}
else
{ //do nothing, this might apply for the keyboard }
super.onConfigurationChanged(newConfig);
}
}
并将其添加到您的清单
<activity android:name=".YourActivity"
android:configChanges="keyboardHidden|orientation"
android:label="@string/app_name">
答案 1 :(得分:1)
在onCreate
中加载背景图片时,请保存对它的引用。我假设它是一个位图,所以在位图上onDestroy
调用recycle
你应该没问题。
答案 2 :(得分:0)