मैं वर्तमान में एंड्रॉइड में विजेट्स के बारे में सीख रहा हूं।गतिशील रूप से विजेट को कैसे अपडेट करें (अद्यतन करने के लिए 30 मिनट का इंतजार नहीं कर रहा है)?
मैं एक वाईफ़ाई विजेट बनाना चाहता हूं जो एसएसआईडी, आरएसएसआई (सिग्नल) स्तर प्रदर्शित करेगा।
लेकिन मैं यह भी एक सेवा से डेटा भेजने में सक्षम होना चाहता हूं जो मैं चल रहा हूं जो वाईफ़ाई पर ध्वनि की गुणवत्ता की गणना करता है। यह विजेट हर 10 सेकंड पर SSID अद्यतन करता है,
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);
}
}
ऊपर ठीक से काम करने लगता है:
यहाँ मैं कुछ पढ़ने और एक त्वरित ट्यूटोरियल के बाद है।
हालांकि मेरी सेवा से जानकारी प्राप्त करने का सबसे प्रभावशाली तरीका क्या है जो मेरे विजेट पर समय-समय पर अपडेट करने के लिए पहले से चल रहा है?
टाइमर और टाइमर्टस्क का उपयोग करने के बजाय विजेट को अपडेट करने के लिए भी एक बेहतर तरीका है? (मतदान करने से बचें)
अद्यतन
करन के सुझाव के अनुसार मैं अपने सेवा में निम्न कोड जोड़ लिया है:
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 स्तर परिवर्तन लेकिन यह अभी भी मेरे विजेट पर टेक्स्टव्यू अपडेट नहीं करता है, किसी भी विचार क्यों?
संपादित
यह, काम मिल गया धन्यवाद करण
यह मेरा समाधान है, 30 मिनट से अधिक बार विजेट को स्वचालित रूप से कैसे अपडेट करें। मैं अलार्ममेनगर का उपयोग करता हूं: http://stackoverflow.com/questions/5476867/updating-app-widget-using-alarmmanager/#answer-14319020 – petrnohejl