gpt4 book ai didi

java - java 中如何更新和管理多个主屏幕小部件?

转载 作者:行者123 更新时间:2023-12-02 01:31:25 25 4
gpt4 key购买 nike

我最近开始用 java 开发小部件,但我并不完全确定使用和管理多个小部件的一般概念。我正在使用 AppWidgetProvider 来更新小部件 UI 并注册点击监听器。我希望 onUpdate() 方法具有所有 appWidgetIds 或需要更新的小部件的 appWidgetIds。然而到目前为止,我总是会获得最近最少创建的小部件的 ID,无论单击哪一个。有一次,我收到了迄今为​​止创建的所有 widgetId,但在我放置另一个 widgetId 后,情况发生了变化。代码 getIntArrayExtra(); 似乎也存在同样的问题;

最后,我希望有多个小部件来显示单独的数据,并且当我单击其中一个时,这些小部件会自行更新或全部更新。我还没有找到一种方法将单个数据绑定(bind)到单个小部件并获取小部件本身(因为在放置另一个小部件后它不会显示在 ids 中)。

如果您能添加一些解释背景信息或指出下面代码中的一些问题,将会非常有帮助,谢谢!

公共(public)类 Slideshow 扩展了 AppWidgetProvider {

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

Intent intent = new Intent(context, UpdateSlideshowService.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);

context.startService(intent);
}

公共(public)类UpdateSlideshowService扩展服务{

@Override
public void onStart(Intent intent, int startId) {

AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this.getApplicationContext());

int[] allWidgetIds = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS);

for (int widgetId : allWidgetIds) {
int number = (new Random().nextInt(100));

Intent clickIntent = new Intent(this.getApplicationContext(), Slideshow.class);
clickIntent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
clickIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, allWidgetIds);

PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, clickIntent,
PendingIntent.FLAG_UPDATE_CURRENT);

RemoteViews remoteViews = new RemoteViews(this.getApplicationContext().getPackageName(),
R.layout.slideshow);
remoteViews.setTextViewText(R.id.update, "Random: " + number);
remoteViews.setOnClickPendingIntent(R.id.update, pendingIntent);

appWidgetManager.updateAppWidget(widgetId, remoteViews);
}

stopSelf();
super.onStart(intent, startId);
}

最佳答案

关于java - java 中如何更新和管理多个主屏幕小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57554300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com