android 动态升级,android – 如何动态更新小部件(不等待30分钟forUpdate被调用)?
我目前正在学习Android中的小部件.我想创建一个将显示SSID(RSSI(Signal))级别的WIFI小部件.但是我也希望能够从我正在运行的服务发送数据,通过wifi计算声音的质量.这是我读过的一些简短的教程之后:public class WlanWidget extends AppWidgetProvider{RemoteViews remoteViews;AppWidgetManager
我目前正在学习
Android中的小部件.
我想创建一个将显示SSID(RSSI(Signal))级别的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.
然而,从我的服务获取已经运行的信息的最有效的方式是什么?
还有更好的方法来更新小部件,而不是使用定时器和时间戳? (避免投票)
UPDATE
根据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,任何想法为什么?
编辑
得到它的工作,谢谢卡兰
更多推荐
所有评论(0)