gpt4 book ai didi

基于contentprovider数据变化的Android app widget更新

转载 作者:行者123 更新时间:2023-11-30 01:18:58 28 4
gpt4 key购买 nike

我正在尝试向 launcher3 应用程序添加一个小部件,该应用程序从在单独进程中运行的内容提供者获取数据并将其显示在小部件的 ListView 中。只要 contentprovider 数据发生变化,小部件就必须更新其 ListView 项。我正在寻找一些示例以了解其工作原理。有人可以为我指出一些链接或示例吗?

最佳答案

您必须手动触发更新。一种方法是向您的 AppWidgetProvider 发送广播 Intent 。

public class MyAppWidgetProvider extends AppWidgetProvider {
private static final String REFRESH_ACTION = "com.mypackage.appwidget.action.REFRESH";

public static void sendRefreshBroadcast(Context context) {
Intent intent = new Intent(REFRESH_ACTION);
intent.setComponent(new ComponentName(context, MyAppWidgetProvider.class));
context.sendBroadcast(intent);
}

@Override
public void onReceive(final Context context, Intent intent) {
final String action = intent.getAction();

if (REFRESH_ACTION.equals(action)) {
// refresh all your widgets
AppWidgetManager mgr = AppWidgetManager.getInstance(context);
ComponentName cn = new ComponentName(context, ScheduleWidgetProvider.class);
mgr.notifyAppWidgetViewDataChanged(mgr.getAppWidgetIds(cn), R.id.widget_list);
}
super.onReceive(context, intent);
}

...
}

当您的应用小部件显示的数据发生变化时,您的 ContentProvider 可以简单地调用 MyAppWidgetProvider.sendRefreshBroadcast(getContext())

关于基于contentprovider数据变化的Android app widget更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37403879/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com