在Handler中设置Textler中的文本性能不佳

Boy*_*Boy 5 performance android datepicker textview

由于Android不支持显示日期,我在我的布局中添加了TextView.

在DatePicker上我放了一个onDateChangedListener.当日期改变时,我确定星期几,然后通过处理程序设置它以确保它在UI线程上完成:

// this is being called when the date changes on the DatePicker
public void onDateChanged(DatePicker view, final int year,
                final int monthOfYear, final int dayOfMonth) {
    String dayOfTheWeek = null;

    // some code here to set the 'dayOfTheWeek' string

    h.sendMessage(h.obtainMessage(0, dayOfTheWeek));
}

final Handler h = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        dayOfWeekTextView.setText((String)msg.obj);
    }
};
Run Code Online (Sandbox Code Playgroud)

我的问题:当我滚动窗口小部件中的日子(Android 4.0 U I)时,它并不顺畅!我检查问题是什么,这不是我确定String应该是什么的方式,它实际上是setText()在Handler中.评论那部分uit,一切都很好.同样在那里设置硬编码文本(dayOfWeekTextView.setText("SOMETHING');)会产生同样的问题.它紧张不安DatePicker.

是否setText()真有那么大的作用吗?奇妙清单显示了星期几,并且运行平稳,但我无法知道他们是如何做到的.

我只测试了它HTC One X.有人有想法吗?

编辑:

我发现了为什么它在Wunderlist中很顺利!我使用的是DialogFragment.您可以在对话框上设置标题,这是Wunderlist使用的而不是TextView.所以我打算使用它(看起来也更好;))

所以当做'getDialog().setTitle(dayOfWeek)时,没有问题.问题仍然存在:为什么setText在UI线程上变得缓慢......?

She*_*tib 3

解决方案 一个非常性感和肮脏的解决方案是创建 7TextView并切换其中一个的可见性。直到一周延长到 8 天的那一天,这种方法应该会带来更好的性能。


另外,这可能是由于文本视图的布局参数造成的。您可能想给它一些额外的空间,或者换句话说,setText 不应该引起布局。我不确定这是否正在发生。

  • 多谢!这确实是“match_parent”的伎俩!我学到了一个新词(发生):) (2认同)