一段时间后,锁屏小工具不起作用

时间:2014-03-25 17:39:46

标签: java android widget lockscreen

您好我正在编写一个锁定屏幕小部件,它是不同的按钮和显示信息的文本,小部件在添加或“最大化”或“最小化”时工作正常(全屏或半屏模式解锁)当手机刚打开时,问题是当手机出现一段时间然后按钮没有做任何事情,我读了很多关于它的帖子,但我没有发现我的问题。 我有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);
}

1 个答案:

答案 0 :(得分:0)

有点晚了,但经过几个小时的调试后我才发现解决方案(在互联网上似乎没有任何地方^^)。每当您锁定手机并且锁屏小部件处于折叠状态时,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 ;)
}