请告诉我如何正确实现 Android 中小部件的 TextView 每隔几秒更新(分配新值)?由于每 30 分钟更新一次小部件的限制,内置 updatePeriodMillis 参数不适合。小部件中的文本必须每隔几秒更改一次。
如何正确且最佳地执行此任务:为了最大限度地减少电池消耗,以便计时器更新仅在小部件在活动且打开的屏幕上可见时才起作用,而在其他情况下(正在运行的应用程序、关闭的应用程序)或锁定屏幕、打开设置等)- 小部件更新被禁用?
Android Studio 默认创建了一个简单的 NewAppWidget 小部件:
package com.dev.app;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.widget.RemoteViews;
/**
* Implementation of App Widget functionality.
*/
public class NewAppWidget extends AppWidgetProvider {
static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
int appWidgetId) {
CharSequence widgetText = WidgedDataGenerator.getWidgetString();
// Construct the RemoteViews object
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget);
views.setTextViewText(R.id.appwidget_text, widgetText);
// Instruct the widget manager to update the widget
appWidgetManager.updateAppWidget(appWidgetId, views);
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
// There may be multiple widgets active, so update all of them
for (int appWidgetId : appWidgetIds) {
updateAppWidget(context, appWidgetManager, appWidgetId);
}
}
@Override
public void onEnabled(Context context) {
// Enter relevant functionality for when the first widget is created
}
@Override
public void onDisabled(Context context) {
// Enter relevant functionality for when the last widget is disabled
}
}
新值是通过WidgedDataGenerator.getWidgetString()生成的。TextView 中的文本必须每 2 或 20 秒更新一次(取决于应用程序设置中的值),同时消耗最少的资源。
