[英]Lockscreen widget doesn't work after a while
嗨,我正在编程一个锁屏窗口小部件,它是不同的按钮和显示信息的文本,在添加窗口小部件或“最大化”或“最小化”(全屏或半屏模式可解锁)时以及电话刚刚打开,问题是当电话停顿一会儿时,按钮却什么也不做,我读了很多有关它的文章,但我没有发现问题。 我有CyanogenMod 11 [4.4.2]
<receiver
android:name="com.example.widget"
android:label="magicButtons" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_provider" />
</receiver>
<receiver android:name="com.example.widgetReciber">
<intent-filter>
<action android:name="updateW"/>
</intent-filter>
</receiver>
Widget.java(不完全是这样):
@Override
public void onEnabled(Context context) {
super.onEnabled(context);
//Upgrade buttons
}
@Override
public void onUpdate(Context context,AppWidgetManager appWidgetManager, int[] appWidgetIds){
super.onUpdate(context,appWidgetManager,appWidgetIds);
//Upgrade buttons
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
}
有点晚了,但是经过几个小时的调试,我才找到了解决方案(互联网上似乎没什么地方^^)。 显然,每当您锁定手机并且锁屏窗口小部件处于折叠状态时,Android就会调用onAppWidgetOptionsChanged()。 这将重新创建您的小部件。
为了防止小部件变得不可用,您必须像在onUpdate()中一样做同样的事情。
例:
public void onUpdate(Context context, AppWidgetManager manager,
int[] appWidgetIds) {
for(int a = 0; a < appWidgetIds.length; a++) {
manager.updateAppWidget(appWidgetsIds[a], createWidget());
}
}
public void onAppWidgetOptionsChanged(Context context, AppWidgetManager manager,
int appWidgetId, Bundle widgetOptions) {
manager.updateAppWidget(appWidgetId, createWidget());
}
private RemoteViews createWidget() {
//Create your Widget (aka RemoteViews) here! You might want to pass
//needed variables for creating the widget ;)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.