android调服务不更新,android – OnUpdate()不调用小部件服务
我正在为我的应用程序开发一个小部件.窗口小部件名称是历史记录,当用户浏览任何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()不调用小部件服务相关推荐
- android通知栏应用程序更新,Android App自动更新之通知栏下载
本文实例为大家分享了Android App自动更新通知栏下载的具体代码,供大家参考,具体内容如下 版本更新说明 这里有调用UpdateService启动服务检查下载安装包等 1. 文件下载,下完后写入 ...
- eureka组件服务集群,feign远程调用,生产者服务集群,ribbon组件(负载均衡),hystrix组件(断路器),zuul(网关路由)
一.搭建Eureka服务集群 1.创建和一个父module(用于依赖管理) a. 配置pom文件 <?xml version="1.0" encoding="UTF ...
- android wear5.1.1更新,Android Wear 5.1体验:苹果表遭遇劲敌
Apple Watch发售以来,在全球智能手表的市场上掀起了一股狂潮,而作为早早就进入这一领域的谷歌Android Wear阵营,绝不能只是打头炮的先驱者,显然应该更有作为. 此前我们已经预告了谷歌为 ...
- android studio gradle 自动更新,android studio gradle 两种更新方法更新
又快一年没有使用AS了,正好要查看一个Android项目代码,干脆升级到新版试试看新变化,旧版本为3.1.2,目前最新版本为3.4.2,AS的升级是很简单的直接update等待即可. 升级完了,打开G ...
- android调webview的方法,Android中的WebView详解
Android中的WebView详解 WebView详解 基本用法 布局文件配置WebView android:id="@+id/wv_news_detail" android:l ...
- android+仿友盟更新,android友盟增量更新
1.增量升级的原理 增量更新的原理就是将本地apk与服务器端最新版本比对,并得到差异包.比如现在的版本是1.1.4,大小是7.2M,新版本是1.1.5.大小是7.3M.我们发现两个版本只有0.1M的差 ...
- android fragmentpageradapter切换不更新,android – FragmentPagerAdapter不会在方向更改时重新创建片段吗?...
我有一个ViewPager(扩展FragmentPagerAdapter),它包含两个片段.我需要的是当我在它们之间滑动时为每个片段刷新ListView.为此,我实现了ViewPager.OnPage ...
- 快速更新android sdk,最新快速更新Android SDK方法:免费离线下载,离线更新SDK
一.寻找SDK资源 1.大连东软信息学院镜像服务器地址:http://mirrors.neusoft.edu.cn 端口:80 这个镜像速度不错,离线下载可以秒下哦!!!!! 2.对照资源,找到要下 ...
- ADT更新过慢与更新Android SDK过慢
2019独角兽企业重金招聘Python工程师标准>>> <ol> <li>ADT更新过慢 </li> <li>Android SDK ...
最新文章
- 远程服务器的url怎么配置文件,Linux常用命令(5)--SSH访问远程服务器、SCP服务器间文件拷贝...
- HTTP隧道工具HTTPTunnel
- python日期函数引用_Python pandas.to_datetime函数方法的使用
- python open 打开是什么类型的文件-详解Python中open()函数指定文件打开方式的用法...
- 路由器发展编年史 完结篇
- 算法和时间复杂度概念(一级)
- 本地第一次对接已经存在的github上的repository
- HQL写topN、Spark写topN
- 数据库开发综合案例——仓库管理系统设计
- html在线客服,网页在线客服代码_jQuery QQ客服
- dbv mysql_mysql数据库版本控制dbv使用 - mysql数据库栏目 - 自
- 笔记本电脑怎么找计算机硬盘,如何给笔记本电脑硬盘分区
- 【菜鸟进阶之路】P6367 [COCI2006-2007#6] PRASE - 洛谷
- 如何用Excel做动态图表
- mysql数据库所有表合并_mysql数据库如何将表合并我从数据库中倒出表导出后是这样的b 爱问知识人...
- 云服务器可以用来做什么
- 从废弃塑料瓶到鼠标,微软海洋环保鼠标背后不一般的工程实践
- SML-Abridgelab
- ktkkt的视频怎么下载
- Nexus-配置VDC