我在使用ViewFlipper访问视图中的数据时尝试使用inflate。我做过崩溃的示例项目。
main.xml
<?xml version="1.0" encoding="utf-8"?>
<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
FlipViewBug.java
package android.FlipViewBug;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
public class FlipViewBug extends Activity {
private static LayoutInflater inflater = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
}
当我将模拟器从水平方向旋转到垂直方向 CTRL + F11 应用程序因 意外停止 而崩溃。
如果我删除行
inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
app工作正常。我想做错事吗?在我的应用中,我有更复杂的LinnarView
ViewFlipper
嵌套,结果相同。
我在Android 1.5,2.2和galaxy选项卡上检查了这个。将垂直视图旋转到水平时没有问题。
答案 0 :(得分:0)
根据经验,如果您在static
数据中存储UI objectrefs,那么您可能做错了。 :)即使事情似乎有效,在Android决定杀死您的进程之前,您可能会泄漏内存。有关详细信息,请参阅Romain Guy's article。
所以基本上你回答了自己的问题......不要这样做!如果你想推迟翻阅视图的通知,直到它们被翻转(即作为性能改进),我建议你研究ViewStub
。