2 votes

Le widget de l'application Android ne se met pas à jour

J'ai vu plusieurs autres questions sur des widgets qui ne se mettaient pas à jour, mais toutes étaient dues au fait que updatePeriodMillis était configuré à une valeur inférieure à 30 minutes, alors que j'ai réglé la mienne à 1 heure et que je vérifie depuis plusieurs heures maintenant.

J'ai démarré un projet séparé de mon projet de widget actuel juste pour tester la mise à jour et je n'arrive à rien.

Le widget met simplement à jour un TextView avec currentTimeMillis().

AndroidManifest.xml

    <receiver android:name="TestWidget" android:exported="false">
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
        </intent-filter>
        <meta-data android:resource="@xml/widget" android:name="android.appwidget.provider"/>
    </receiver>

widget.xml

 <?xml version="1.0" encoding="utf-8"?>
 <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
     android:initialLayout="@layout/widget"
     android:minHeight="40dp"
     android:minWidth="250dp"
     android:updatePeriodMillis="3600000" >
 </appwidget-provider>

tout se charge bien au premier appel, mais onUpdate n'est plus jamais appelé.

Des suggestions ?

éditer :

TestWidget.class surcharge uniquement onUpdate

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
        int[] appWidgetIds) {

    final int N = appWidgetIds.length;

    for (int i = 0; i < N; i++) {
        // Inflate the layout
        RemoteViews v = new RemoteViews(context.getPackageName(),
                R.layout.widget);
        v.setTextViewText(R.id.text1, Double.toString(Math.random()));
        v.setTextViewText(R.id.text2,
                Long.toString(System.currentTimeMillis()));

        // Update the widget
        appWidgetManager.updateAppWidget(appWidgetIds[i], v);

    }
}

3voto

Budius Points 12015

Je voudrais m'excuser auprès de la communauté pour cette question inutile, car il semble finalement que mon téléphone fonctionnait mal (étant donné que je l'ai redémarré) ou que j'étais simplement un peu impatient.

Il semble qu'il faille plusieurs heures pour que la fonction onUpdate soit appelée par le cadre. Sur les 3 dernières heures (je dormais avant), je peux voir la mise à jour arriver assez régulièrement.

Je n'ai pas supprimé la question, juste au cas où quelqu'un aurait le même problème, IL FAUT VRAIMENT ATTENDRE !

Merci.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X