- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我创建了一个具有以下构造函数的自定义首选项
public CoordinatesPreference(Context context, AttributeSet attrs)
{
super(context, attrs);
setLayoutResource(R.layout.coordinates_preference);
}
我重写了 onCreateView()
所以它会像这样写入日志:
@Override
protected View onCreateView(ViewGroup parent)
{
Log.d("test", "Creating Preference view");
return super.onCreateView(parent);
}
并且我的日志中充满了“Creating Preference view”
消息,这会造成滚动时滞后的感觉,我相信转换 View 应该可以解决这个问题,我查看了首选项源代码如果转换 View 为空,则调用 onCreateView()
。
为了测试目的,我添加了这个方法:
@Override
public View getView(View convertView, ViewGroup parent)
{
if (convertView == null)
{
return super.getView(convertView, parent);
}
return super.getView(convertView, parent);
}
然后设置断点。我发现我的转换 View 几乎总是空的。因此它必须创建一个新 View ,这是为什么?以及如何改进这一点以避免延迟的首选项屏幕?
编辑:更改了 onCreate 的调用方式,现在它是所有 android 我只使用 setLayoutResource
。但这并不能解决问题...
EDIT2:我使用了 Debug.StartMethodTracing()
并且发现我怀疑 55% 的时间花费(当我只是上下滚动时)花费在通货膨胀上当 convertView
为 null 时,从 getView()
调用的方法 onCreateView()
的首选项。
谢谢,杰森
最佳答案
我不知道您在此自定义首选项中实现了什么,但也许父类(super class)不知道如何根据您的首选项创建合适的 View ?
来自文档:
protected View onCreateView (ViewGroup parent)
Since: API Level 1 Creates the View to be shown for this Preference in the PreferenceActivity. The default behavior is to inflate the main layout of this Preference (see setLayoutResource(int). If changing this behavior, please specify a ViewGroup with ID widget_frame. Make sure to call through to the superclass's implementation.
http://developer.android.com/reference/android/preference/Preference.html
我猜你已经在水平布局上设置了那个 id。
既然我在谈论它,为什么不在您正在膨胀的布局中包含这个水平布局?
关于android - onCreateView() 在自定义首选项中被调用得太频繁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4226660/
我有一个包含值的字符串数组(duh...)。 有没有一种简单的方法可以获取出现次数最多的条目?有点像 values[37].getMostOften(); 干杯:) 最佳答案 您可以使用GroupBy
我目前正在将一款用 C#(适用于 Windows Phone)开发的游戏移植到 Java (Android)。 我们在 Java 版本中遇到了内存问题,在分析之后,似乎是由于内存中的大量 String
对于播放音频文件的 iPhone 应用程序,我正在开发一个系统来跟踪用户在他们听过的任何一集中的进度(例如,他们听 file1 的前 4:35,然后开始另一个文件,然后返回到文件 1,它从 4:35
如果您按下 UIbutton 显示 UITextView,将请求代码 Ì 再次按下 UIbutton 再次显示 UITextView :/ 最佳答案 .h 文件中只有一个 int 变量,如下所示..
我在 Application_End 上处理的项目中使用临时数据库: protected void Application_End() { if (_db != null) _db.Dispo
我是一名优秀的程序员,十分优秀!