系统重新启动我的进程后,AppWidget单击丢失。

| 我正在制作一个appwidget,但单击事件有问题,当系统终止该小部件的进程并稍后重新启动它时,单击事件会丢失。屏幕旋转后也会发生这种情况。 根据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是应用程序的线性布局的ID。我试图将此点击事件也添加到textview,但结果相同。 我在这个问题上解决了好几天,发现一些人也遇到了同样的问题,但是没有解决方案对我有用:(我也尝试了不同的挂起的意图标志,但没有成功。 第二个问题是,当我在主屏幕上添加另一个appwidget时,它对点击事件没有反应。在logcat中,我看到来自onUpdate方法\“ onUpdate小部件#xy \”的消息,但是appwidget对点击没有反应。只有放在主屏幕上的第一个appwidget会对点击做出反应,但仅持续一段时间。有任何想法吗?     
已邀请:
当您说第一个窗口小部件停止响应单击时,是否表示未调用
onUpdate
方法?也许将一些代码放在put2中,以查看是否正在调用该代码,如果是,则在该函数中放入任何必要的逻辑。另外,您可以通过
onReceive
方法(在同一链接中找到)捕获意图,以查看您的窗口小部件实际收到的意图。 另外,请确保正在运行接收器的“ 4”(传递给此功能的接收器)是“应用程序”或“服务”,而不是“活动”,否则对它的引用可能不会持久。 您还必须确保每次使用
RemoteViews
对象更新小部件时,都发送完全重建小部件所需的所有数据。这是因为,例如在屏幕旋转时,系统没有任何东西可以用来重建窗口小部件,而您传递的是最新的
RemoteViews
。     

要回复问题请先登录注册