gpt4 book ai didi

android - 系统重启我的进程后 AppWidget 点击丢失

转载 作者:太空狗 更新时间:2023-10-29 13:41:09 26 4
gpt4 key购买 nike

我正在制作一个 appwidget,但我遇到了点击事件的问题,当系统终止该 widget 的进程并稍后重新启动它时,该事件会丢失。这也会在屏幕旋转后发生。

针对 SDK 版本 7 构建并在模拟器 (2.1) 和带有 2.3.3 的真实设备上运行。

我的 onUpdate 方法:

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
for (int wid : appWidgetIds) {
Log.i(TAG, "onUpdate widget #" + wid);

Intent intent = new Intent(context, MyClass.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, wid);

PendingIntent clickIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

RemoteViews widget = new RemoteViews(context.getPackageName(), R.layout.widget);
widget.setOnClickPendingIntent(R.id.widget_layout, clickIntent);

appWidgetManager.updateAppWidget(wid, widget);
}

super.onUpdate(context, appWidgetManager, appWidgetIds);
}

其中 R.id.widget_layout 是 appwidget 线性布局的 id。我试图将此点击事件也添加到 TextView 中,但结果相同。

我和这个问题打了好几天,我发现有些人遇到了同样的问题,但没有任何解决方案适合我:(我也尝试了不同的未决 Intent 标志,但没有成功。

第二个问题是,当我在主屏幕上添加另一个应用程序小部件时,它不会对点击事件使用react。在 logcat 中,我看到来自 onUpdate 方法“onUpdate widget #xy”的消息,但 appwidget 对点击没有反应。只有放置在主屏幕上的第一个应用程序小部件会对点击使用react,但只会持续一段时间。有什么想法吗?

最佳答案

当您说第一个小部件停止响应点击时,您的意思是 onUpdate 方法没有被调用吗?也许在 onEnabled(Context context) 中放入一些代码查看是否正在调用它,如果是,则在该函数中放入任何必要的逻辑。此外,您可以通过 onReceive 方法(在同一链接中找到)捕获 Intent ,以查看您的小部件实际接收了哪些 Intent 。

此外,请确保运行接收器的Context(传递给此函数的那个​​)是一个应用程序或服务,而不是一个 Activity ,或者对它的引用可能不坚持。

您还必须确保每次使用 RemoteViews 对象更新小部件时,您都发送了完全重建小部件所需的所有数据。这是因为,例如,在屏幕旋转时,除了您传递给它的最新 RemoteViews 之外,系统没有任何东西可以重建小部件。

关于android - 系统重启我的进程后 AppWidget 点击丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5655015/

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