码迷,mamicode.com
首页 > 移动开发 > 详细

android学习记录(十八)---AppWidget显示内容随数据改变而更新

时间:2015-05-17 09:26:30      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:android   appwidget   实时更新   android学习记   

我们知道,appWidget可通过设置widgetinfo中的updateTimeMillies设置更新的间隔,那么,当我们需要实时进行更新的时候呢?该如何进行appWidget显示内容的更新?如行程应用中添加了新的行程,想立刻在appWidget显示内容更新。

如何?

我们知道,widgetProvider本质上就是一个广播接收器,所以我们可以在数据修改处发送一个与之符合的广播。

当我们的intent并没附带任何额外数据,只定义了action的时候,会调用WidgetProvider中的onReceive方法。

那么我们就简单的实现以下数据实时更新:

发送广播:

public void addData(Context context){
    add....();
    updateWidget(context)
}
//发送广播,使appWidget更新
private void updateWidget(Context context) {
    Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE);  
    context.sendBroadcast(intent);
}

YourAppWidgetProvider代码:

@Override
public void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent);
        final AppWidgetManager mgr = AppWidgetManager.getInstance(context);
        final ComponentName cn = new ComponentName(context, EventWidgetProvider4x2.class);
        mgr.notifyAppWidgetViewDataChanged(mgr.getAppWidgetIds(cn), R.id.widget4x2LV);
}

我又好奇什么时候会调用AppWidgetProvider的onUpdate呢?

查看AppWidgetProvider部分源码:

  public void onReceive(Context context, Intent intent) {
               String action = intent.getAction();
        if (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action)) {
            Bundle extras = intent.getExtras();
            if (extras != null) {
                int[] appWidgetIds = extras.getIntArray(AppWidgetManager.EXTRA_APPWIDGET_IDS);
                if (appWidgetIds != null && appWidgetIds.length > 0) {
                    this.onUpdate(context, AppWidgetManager.getInstance(context), appWidgetIds);
                }
            }
        }
…

即只有在intent中含有extras且key为AppWidgetManager.EXTRA_APPWIDGET_IDS的值不为空时调用。
当我们的广播不含有这个extras的时候,onReceive会调用,onUpdate不会。


随时欢迎各路好汉能发表见解,想法值得分享~

android学习记录(十八)---AppWidget显示内容随数据改变而更新

标签:android   appwidget   实时更新   android学习记   

原文地址:http://blog.csdn.net/zuolovefu/article/details/45772267

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!