我正在为我的应用程序开发一个小部件.窗口小部件名称是历史记录,当用户浏览任何URL时,我将其存储在本地数据库中,从中列出该窗口小部件.

当我打开小部件时,它从本地数据库中获取所有细节并在小部件的列表视图中显示它.

1)当我打开小部件时,首先调用WidgetProvider的onUpdate方法

2)然后onUpdate()将调用服务WidgetService

3)然后服务将调用Widget Factory使用本地存储的db更新列表视图.

在小部件工厂中,它将获取db值并更新小部件中的lisviews.

以上是设置窗口小部件时发生的过程.

第一堂课:

public class WidgetProviderFavorite extends AppWidgetProvider {

@SuppressWarnings("deprecation")

@Override

public void onUpdate(Context ctxt, AppWidgetManager appWidgetManager,int[] appWidgetIds) {

for (int i=0; i

Intent svcIntent=new Intent(ctxt, WidgetServiceFavorite.class);

svcIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);

svcIntent.setData(Uri.parse(svcIntent.toUri(Intent.URI_INTENT_SCHEME)));

RemoteViews widget=new RemoteViews(ctxt.getPackageName(),R.layout.widget_favorite);

widget.setRemoteAdapter(appWidgetIds[i], R.id.listFavoriteLogin,svcIntent);

Intent clickIntent=new Intent(ctxt, WidgetActivityFavorite.class);

PendingIntent clickPI=PendingIntent.getActivity(ctxt, 0,clickIntent,PendingIntent.FLAG_UPDATE_CURRENT);

widget.setPendingIntentTemplate(R.id.listFavoriteLogin, clickPI);

appWidgetManager.updateAppWidget(appWidgetIds[i], widget);

}

super.onUpdate(ctxt, appWidgetManager, appWidgetIds);

}

第二课:

public class WidgetServiceFavorite extends RemoteViewsService {

@Override

public RemoteViewsFactory onGetViewFactory(Intent intent) {

return(new WidgetFactoryFavorite(this.getApplicationContext(),intent));

}

}

第三类:将获取并更新列表视图.

在construtor中获取并getViewAt()(它自动调用)将设置值.

public class WidgetFactoryFavorite extends Activity implements RemoteViewsService.RemoteViewsFactory {

public WidgetFactoryFavorite(Context ctxt, Intent intent) {

int array_Index=0;

int array_Length=0;

WidgetDatabase db1=new WidgetDatabase(ctxt);

List facorite = db1.getFavorite();

array_Length=facorite.size();

mNames=new String[array_Length];

mSummary=new String[array_Length];

for (WidgetDatabaseModel cn : facorite) {

mNames[array_Index] =cn.getNAME();

mSummary[array_Index]= cn.getSUMMARY();

array_Index++;

}

this.mCtxt=ctxt;

intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,

AppWidgetManager.INVALID_APPWIDGET_ID);

}

@Override

public void onCreate() {

// no-op

}

@Override

public void onDestroy() {

// no-op

}

@Override

public int getCount() {

return(mNames.length);

}

@Override

public RemoteViews getViewAt(int position) {

RemoteViews row=new RemoteViews(mCtxt.getPackageName(),

R.layout.widget_rowfavorite);

row.setTextViewText(android.R.id.text1, mNames[position]);

Intent i=new Intent();

Bundle extras=new Bundle();

extras.putString(WidgetProviderFavorite.sExtra_Guid, mGuid[position]);

extras.putString(WidgetProviderFavorite.sExtra_Url, mUrl[position]);

i.putExtras(extras);

row.setOnClickFillInIntent(android.R.id.text1, i);

return(row);

}

@Override

public RemoteViews getLoadingView() {

return(null);

}

@Override

public int getViewTypeCount() {

return(1);

}

@Override

public long getItemId(int position) {

return(position);

}

@Override

public boolean hasStableIds() {

return(true);

}

@Override

public void onDataSetChanged() {

}

}

我的问题是:

当我在浏览器中浏览某些URL时,它不能并排同步.我在新数据库更新数据库时使用了以下代码同步.

int[] ids = AppWidgetManager.getInstance(mActivity).getAppWidgetIds(new ComponentName(mActivity, WidgetProviderFavorite.class));

WidgetProviderFavorite myWidget = new WidgetProviderFavorite();

myWidget.onUpdate(mActivity, AppWidgetManager.getInstance(mActivity),ids);

它调用onUpdate方法().但onUpdate不会调用将调用工厂类并使用新数据库值提升lisview的服务类.当我将新值添加到db时,我之前提到的流程没有发生.

为什么不调用服务方法?

或者任何其他方法在数据库值更改时刷新列表视图

android调服务不更新,android – OnUpdate()不调用小部件服务相关推荐

  1. android通知栏应用程序更新,Android App自动更新之通知栏下载

    本文实例为大家分享了Android App自动更新通知栏下载的具体代码,供大家参考,具体内容如下 版本更新说明 这里有调用UpdateService启动服务检查下载安装包等 1. 文件下载,下完后写入 ...

  2. eureka组件服务集群,feign远程调用,生产者服务集群,ribbon组件(负载均衡),hystrix组件(断路器),zuul(网关路由)

    一.搭建Eureka服务集群 1.创建和一个父module(用于依赖管理) a. 配置pom文件 <?xml version="1.0" encoding="UTF ...

  3. android wear5.1.1更新,Android Wear 5.1体验:苹果表遭遇劲敌

    Apple Watch发售以来,在全球智能手表的市场上掀起了一股狂潮,而作为早早就进入这一领域的谷歌Android Wear阵营,绝不能只是打头炮的先驱者,显然应该更有作为. 此前我们已经预告了谷歌为 ...

  4. android studio gradle 自动更新,android studio gradle 两种更新方法更新

    又快一年没有使用AS了,正好要查看一个Android项目代码,干脆升级到新版试试看新变化,旧版本为3.1.2,目前最新版本为3.4.2,AS的升级是很简单的直接update等待即可. 升级完了,打开G ...

  5. android调webview的方法,Android中的WebView详解

    Android中的WebView详解 WebView详解 基本用法 布局文件配置WebView android:id="@+id/wv_news_detail" android:l ...

  6. android+仿友盟更新,android友盟增量更新

    1.增量升级的原理 增量更新的原理就是将本地apk与服务器端最新版本比对,并得到差异包.比如现在的版本是1.1.4,大小是7.2M,新版本是1.1.5.大小是7.3M.我们发现两个版本只有0.1M的差 ...

  7. android fragmentpageradapter切换不更新,android – FragmentPagerAdapter不会在方向更改时重新创建片段吗?...

    我有一个ViewPager(扩展FragmentPagerAdapter),它包含两个片段.我需要的是当我在它们之间滑动时为每个片段刷新ListView.为此,我实现了ViewPager.OnPage ...

  8. 快速更新android sdk,最新快速更新Android SDK方法:免费离线下载,离线更新SDK

    一.寻找SDK资源 1.大连东软信息学院镜像服务器地址:http://mirrors.neusoft.edu.cn 端口:80  这个镜像速度不错,离线下载可以秒下哦!!!!! 2.对照资源,找到要下 ...

  9. ADT更新过慢与更新Android SDK过慢

    2019独角兽企业重金招聘Python工程师标准>>> <ol> <li>ADT更新过慢 </li> <li>Android SDK ...

最新文章

  1. 远程服务器的url怎么配置文件,Linux常用命令(5)--SSH访问远程服务器、SCP服务器间文件拷贝...
  2. HTTP隧道工具HTTPTunnel
  3. python日期函数引用_Python pandas.to_datetime函数方法的使用
  4. python open 打开是什么类型的文件-详解Python中open()函数指定文件打开方式的用法...
  5. 路由器发展编年史 完结篇
  6. 算法和时间复杂度概念(一级)
  7. 本地第一次对接已经存在的github上的repository
  8. HQL写topN、Spark写topN
  9. 数据库开发综合案例——仓库管理系统设计
  10. html在线客服,网页在线客服代码_jQuery QQ客服
  11. dbv mysql_mysql数据库版本控制dbv使用 - mysql数据库栏目 - 自
  12. 笔记本电脑怎么找计算机硬盘,如何给笔记本电脑硬盘分区
  13. 【菜鸟进阶之路】P6367 [COCI2006-2007#6] PRASE - 洛谷
  14. 如何用Excel做动态图表
  15. mysql数据库所有表合并_mysql数据库如何将表合并我从数据库中倒出表导出后是这样的b 爱问知识人...
  16. 云服务器可以用来做什么
  17. 从废弃塑料瓶到鼠标,微软海洋环保鼠标背后不一般的工程实践
  18. SML-Abridgelab
  19. ktkkt的视频怎么下载
  20. Nexus-配置VDC

热门文章

  1. 从零学React Native之13 持久化存储
  2. redis主从复制,读写分离
  3. svn idea使用
  4. qml demo分析(threading-线程任务)
  5. Windows 8 应用开发 - 本地数据存储
  6. ResultSet转List
  7. [转]应届毕业生生存法则--工作篇
  8. JQuery学习笔记02-选择器把需要的东西揪出来(基础)
  9. json web token 实践登录以及校验码验证
  10. 前端通信:ajax设计方案(十)--- 完善Promise A+规范,增加mock数据功能