-1

I am new to Android Studio and my problem is my widget is not updating. Let's say I changed my data JSON. I have read some threads and says that a widget has a time interval of 30mins to refresh. But I have waited for my simulator 30mins and nothing changed. Can someone help me out on this ? Because I want my widget to update atleast 30mins default..

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)
        }
    }
}
Desmond A
  • 113
  • 1
  • 3
  • 7

1 Answers1

0

OH, I think i have found a solution. There is a android:updatePeriodMillis on my Widget Info XML. That should do the trick.

Desmond A
  • 113
  • 1
  • 3
  • 7