如何更新widget Android Studio Kotlin
我是Android Studio的新手,我的问题是我的小部件没有更新。假设我更改了数据JSON。我读过一些文章,说一个小部件有30分钟的刷新时间间隔。但我已经等了我的模拟器30分钟,什么也没变。有人能帮我吗?因为我希望我的小部件至少更新30分钟的默认值如何更新widget Android Studio Kotlin,android,android-widget,kotlin,Android,Android Widget,Kotlin,我是Android Studio的新手,我的问题是我的小部件没有更新。假设我更改了数据JSON。我读过一些文章,说一个小部件有30分钟的刷新时间间隔。但我已经等了我的模拟器30分钟,什么也没变。有人能帮我吗?因为我希望我的小部件至少更新30分钟的默认值 class TestWidget : AppWidgetProvider() { private val httpClient = AsyncHttpClient() private var title = String.toS
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)
}
}
}
class TestWidget:AppWidgetProvider(){
private val httpClient=asynchtpclient()
private var title=String.toString()
private var imageUrl=String.toString()
重写fun onUpdate(上下文:上下文,appWidgetManager:appWidgetManager,AppWidgetId:IntArray){
//可能有多个窗口小部件处于活动状态,因此请更新所有窗口小部件
get(jsonUrl,对象:JsonHttpResponseHandler(){
覆盖成功时的乐趣(状态代码:Int,标题:Array,响应:JSONArray){
val json=response.getJSONObject(0)
title=json.getString(“title”)
imageUrl=json.getString(“imageUrl”)
val views=远程视图(context.packageName、R.layout.test_小部件)
views.setTextViewText(R.id.text,title)
毕加索。与(上下文)
.load(图像URL)
.into(视图、R.id.image、AppWidgetId)
}
覆盖失败(状态代码:Int,标题:Array?,throwable:throwable?,错误响应:JSONObject?){
println(可丢弃?.localizedMessage)
}
})
for(appWidgetId中的appWidgetId){
updateAppWidget(上下文、appWidgetManager、appWidgetId)
}
}
覆盖已启用(上下文:上下文){
//输入创建第一个小部件时的相关功能
}
已禁用覆盖(上下文:上下文){
//输入禁用最后一个小部件时的相关功能
}
伴星{
内部fun updateAppWidget(上下文:context,appWidgetManager:appWidgetManager,
appWidgetId:Int){
//构造RemoteView对象
val views=远程视图(context.packageName、R.layout.test_小部件)
//指示小部件管理器更新小部件
appWidgetManager.UpdateAppWidgetId(appWidgetId,视图)
}
}
}
哦,我想我找到了解决办法。
在我的Widget Info XML上有一个android:updatePeriodMillis
。这应该可以解决问题。可能是重复的: