我创建了一个小部件,它使用带有唤醒锁的服务来更新和解析来自xml的数据,并更新小部件的UI,以便项目每隔几秒钟“旋转一次(标准新闻源小部件)。
问题是尽管数据不断更新,但UI会在几个小时后停止更新。
以下是我用来更新UI的代码:
mUpdateTimeTask = null;
mUpdateTimeTask = new Runnable()
{
public void run()
{
if(which_item+1 < Widget_titles.length)
which_item++;
else
which_item = 0;
if(Widget_which_item_ed != null)
{
Widget_which_item_ed.putInt("WIDGET_WHICH_ITEM", which_item);
Widget_which_item_ed.commit();
}
else
{
Widget_which_item = context.getSharedPreferences("WIDGET_WHICH_ITEM", Context.MODE_WORLD_WRITEABLE);
Widget_which_item_ed = Widget_which_item.edit();
Widget_which_item_ed.putInt("WIDGET_WHICH_ITEM", which_item);
Widget_which_item_ed.commit();
}
updateViews.setTextViewText(R.id.WidgetText, Widget_titles[which_item]);
updateViews.setTextViewText(R.id.WidgetPostTime, rightNow.get(Calendar.MONTH)+"/"+rightNow.get(Calendar.DATE)+"/"+rightNow.get(Calendar.YEAR));
manager = AppWidgetManager.getInstance(context);
manager.updateAppWidget(WidgetId, updateViews);
mHandler.removeCallbacks(mUpdateTimeTask);
mHandler.postDelayed(this, widget_interval * 1000);
}
};
mHandler.postDelayed(mUpdateTimeTask, widget_interval * 1000);
Log.i(TAG, "sliding update handler was configed");
我真的被困了,真的可以使用帮助。
编辑:
我设法通过为屏幕开/关意图实现BroadCastReciever来解决这个问题,如下面的教程所示:http://thinkandroid.wordpress.com/2010/01/24/handling-screen-off-and-screen-on-intents/ 因此,小部件需要运行的时间要小得多。
答案 0 :(得分:1)
编辑:
我设法通过为屏幕开/关意图实现BroadCastReciever解决了这个问题,如下面的教程所示:http://thinkandroid.wordpress.com/2010/01/24/handling-screen-off-and-screen-on-intents/因此小部件需要运行的时间要小得多。< / p>