由于Android不支持显示日期的星期几,因此我在我的布局中添加了一个TextView。
在DatePicker上,我设置了一个onDateChangedListener。当日期更改时,我确定星期几,然后通过Handler设置它,以确保在UI线程上完成:
我的问题是:当我在小部件中滚动日期时(Android 4.0 UI),它不够流畅!我检查了问题所在,发现问题不在我确定String的方式上,而是在Handler中的
我只在我的
在DatePicker上,我设置了一个onDateChangedListener。当日期更改时,我确定星期几,然后通过Handler设置它,以确保在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);
}
};
我的问题是:当我在小部件中滚动日期时(Android 4.0 UI),它不够流畅!我检查了问题所在,发现问题不在我确定String的方式上,而是在Handler中的
setText()
。如果将该部分注释掉,一切都正常。即使在那里设置一个硬编码文本(dayOfWeekTextView.setText("SOMETHING');
)也会出现同样的问题。它会抖动DatePicker
。
setText()
真的是如此重要的操作吗?Wunderlist显示了一周的工作日,它运行得很顺畅,但我只是找不到他们是如何做到的。我只在我的
HTC One X
上进行了测试。
有人有想法吗?
编辑:
我发现为什么Wunderlist中很流畅!我正在使用与他们相同的DialogFragment。您可以在对话框上设置标题,这是Wunderlist使用的而不是TextView。因此,我将使用它(看起来更好;))
所以当执行“getDialog().setTitle(dayOfWeek)”时没有问题。问题仍然存在:为什么在UI线程上setText如此缓慢...?