gpt4 book ai didi

android - Android:小部件在设备重新启动时崩溃

转载 作者:行者123 更新时间:2023-12-03 17:25:53 26 4
gpt4 key购买 nike

我正在使用窗口小部件,并且我已经注意到Android发出一条消息,表明窗口小部件已停止重新启动设备。在30分钟内收到下一个更新后,它将继续正常工作。我该如何调试导致窗口小部件在重新启动时崩溃或更好的崩溃原因,如何避免重新启动时崩溃。

最佳答案

好。因此,经过几个小时的努力,我设法找到了解决方法(至少对我有用)。

在onReceive中,我正在执行以下操作:

        AppWidgetManager mgr = AppWidgetManager.getInstance(context);

if ("ACTION_BUTTON2_CLICKED".equals(intent.getAction())){
ComponentName thisWidget = new ComponentName(context, StackWidgetProvider.class);
int appWidgetIds[] = mgr.getAppWidgetIds(thisWidget);
Toast toast = Toast.makeText(context, "Refreshing data. Please wait.", Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
//onUpdate(context, mgr, appWidgetIds);
mgr.updateAppWidget(appWidgetIds, new RemoteViews(context.getPackageName(), R.layout.widget_layout));
mgr.notifyAppWidgetViewDataChanged(appWidgetIds, R.id.stack_view);
onUpdate(context, mgr, appWidgetIds);
} else if ("ACTION_BUTTON3_CLICKED".equals(intent.getAction())){
Intent intent1 = new Intent(context, SettingsActivity.class);
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent1);
} else {
ComponentName thisWidget = new ComponentName(context, StackWidgetProvider.class);
int appWidgetIds[] = mgr.getAppWidgetIds(thisWidget);
onUpdate(context, mgr, appWidgetIds);
}

super.onReceive(context, intent);

onReceive和重新启动不能很好地配合使用。我检查一下,如果在重启后一分钟内调用了onReceive,请不要对其采取任何措施。在onReceive进行任何其他操作之前,先进行以下检查似乎已解决了该问题。
        if (SystemClock.elapsedRealtime() < 60000){
return;
}

关于android - Android:小部件在设备重新启动时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26803517/

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