2017-09-24 6 views
-1

Je suis nouveau à Android Studio et mon problème est mon widget ne met pas à jour. Disons que j'ai changé mes données JSON. J'ai lu quelques discussions et dit qu'un widget a un intervalle de temps de 30 minutes pour actualiser. Mais j'ai attendu mon simulateur 30 minutes et rien n'a changé. Quelqu'un peut-il m'aider à ce sujet? Parce que je veux que mon widget pour mettre à jour au moins 30 minutes par défaut ..Comment mettre à jour widget Android Studio Kotlin

class TestWidget : AppWidgetProvider() { 

    private val httpClient = AsyncHttpClient() 
    private var title = String.toString() 
    private var imageUrl = String.toString() 

    override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) { 
     // There may be multiple widgets active, so update all of them 

     httpClient.get(jsonUrl, object : JsonHttpResponseHandler() { 
      override fun onSuccess(statusCode: Int, headers: Array<out Header>, response: JSONArray) { 

       val json = response.getJSONObject(0) 
       title = json.getString("title") 
       imageUrl = json.getString("imageUrl") 

       val views = RemoteViews(context.packageName, R.layout.test_widget) 
       views.setTextViewText(R.id.text, title) 
       Picasso.with(context) 
         .load(imageUrl) 
         .into(views, R.id.image, appWidgetIds) 

      } 

      override fun onFailure(statusCode: Int, headers: Array<out Header>?, throwable: Throwable?, errorResponse: JSONObject?) { 
       println(throwable?.localizedMessage) 

      } 
     }) 

     for (appWidgetId in appWidgetIds) { 
      updateAppWidget(context, appWidgetManager, appWidgetId) 

     } 
    } 

    override fun onEnabled(context: Context) { 
     // Enter relevant functionality for when the first widget is created 
    } 

    override fun onDisabled(context: Context) { 
     // Enter relevant functionality for when the last widget is disabled 
    } 

    companion object { 

     internal fun updateAppWidget(context: Context, appWidgetManager: AppWidgetManager, 
            appWidgetId: Int) { 

      // Construct the RemoteViews object 
      val views = RemoteViews(context.packageName, R.layout.test_widget) 

      // Instruct the widget manager to update the widget 
      appWidgetManager.updateAppWidget(appWidgetId, views) 
     } 
    } 
} 
+0

Probablement un doublon: https://stackoverflow.com/q/4337824/1531971 – jdv

Répondre

0

OH, je pense avoir trouvé une solution. Il y a un android:updatePeriodMillis sur mon Widget Info XML. Cela devrait faire l'affaire.