我正在为我的应用程序开发一个小部件.窗口小部件名称是历史记录,当用户浏览任何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
第二课:
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
我的问题是:
当我在浏览器中浏览某些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时,我之前提到的流程没有发生.
最佳答案
回答我的自我:
我们必须在onUpdateMethod()中调用notifyAppWidgetViewDataChanged().
appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetIds[i],R.id.listView);
完成OnUpdate():
public class WidgetProviderFavorite extends AppWidgetProvider {
@SuppressWarnings("deprecation")
@Override
public void onUpdate(Context ctxt,int[] appWidgetIds) {
for (int i=0; i