Hai*_*ang 6 android remoteview android-appwidget
我在我的开发AppWidget根据Android的文档,装我的光标onCreate(),并在重新加载它onDataSetChanged(),一切工作正常,直到我把我的一些断点RemoteViewsService.RemoteViewsFactory,并惊奇地发现,onDataSetChanged()是始终调用后调用onCreate(),这使我的光标装载两次,当第一创建.我在Android 4.4.3上.
根据Api doc,
public abstract void onDataSetChanged()
在API级别11中添加
在远程适配器上触发notifyDataSetChanged()时调用.这允许RemoteViewsFactory通过更新任何内部引用来响应数据更改.注意:在此方法中可以安全地同步执行昂贵的任务.在此期间,旧数据将显示在窗口小部件中.
似乎只能通过自己手动调用notifyDataSetChanged()来触发此调用.
但是根据Appwidget指南,
在onCreate()中,您可以为数据源设置任何连接/光标.繁重的工作,例如下载或创建内容等,应该推迟到onDataSetChanged()或getViewAt().在此呼叫中花费超过20秒将导致ANR.
通过说延期,是否暗示onDataSetChanged()将被称为后onCreate()?我不太确定......但它确实说我应该把光标放在里面onCreate().
我自己尝试调查此问题,但是可用的源代码正在使用,Binder因此远程调用者仍然未知,因此我无法检查其来源.
你有什么主意吗?
正如您在链接指南中看到的那样,每次在onCreate之后调用onDataSetChanged:
因此,将光标加载到onDataSetChanged是安全的
| 归档时间: |
|
| 查看次数: |
3551 次 |
| 最近记录: |