gpt4 book ai didi

android - 如何动态更新小部件(不等待 30 分钟调用 onUpdate)?

转载 作者:IT王子 更新时间:2023-10-28 23:37:15 24 4
gpt4 key购买 nike

我目前正在学习 Android 中的小部件。

我想创建一个显示 SSID、RSSI(信号)级别的 WIFI 小部件。

但我也希望能够从我正在运行的计算通过 wifi 的声音质量的服务向它发送数据。

这是我在阅读和快速教程后得到的:


public class WlanWidget extends AppWidgetProvider{

RemoteViews remoteViews;
AppWidgetManager appWidgetManager;
ComponentName thisWidget;
WifiManager wifiManager;

public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new WlanTimer(context, appWidgetManager), 1, 10000);

}


private class WlanTimer extends TimerTask{

RemoteViews remoteViews;
AppWidgetManager appWidgetManager;
ComponentName thisWidget;


public WlanTimer(Context context, AppWidgetManager appWidgetManager) {

this.appWidgetManager = appWidgetManager;
remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
thisWidget = new ComponentName(context, WlanWidget.class);
wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);


}

@Override
public void run() {

remoteViews.setTextViewText(R.id.widget_textview,
wifiManager.getConnectionInfo().getSSID());
appWidgetManager.updateAppWidget(thisWidget, remoteViews);
}

}

上面似乎工作正常,它每 10 秒更新一次小部件上的 SSID。

但是,从我的服务中获取信息的最有效方法是什么?该服务将在我的小部件上定期更新已运行的信息?

还有比使用计时器和计时器任务更好的方法来更新小部件吗? (避免轮询)

更新

根据 Karan 的建议,我在我的服务中添加了以下代码:


RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
ComponentName thisWidget = new ComponentName( context, WlanWidget.class );
remoteViews.setTextViewText(R.id.widget_QCLevel, " " + qcPercentage);
AppWidgetManager.getInstance( context ).updateAppWidget( thisWidget, remoteViews );

这会在每次 RSSI 级别更改时运行,但它仍然不会更新我的小部件上的 TextView,有什么想法吗?

编辑

搞定了,谢谢卡兰

最佳答案

您可以使用以下代码来更新小部件的数据:

ComponentName thisWidget = new ComponentName( getContext(), <ProviderClass> );
AppWidgetManager.getInstance( getContext() ).updateAppWidget( thisWidget, rempoteViews );

关于android - 如何动态更新小部件(不等待 30 分钟调用 onUpdate)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2929393/

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