繼this教程中,我迅速創建了一個簡單的小工具,顯示和更新當前時間在主屏幕上每秒鐘:如何更新小部件只有當WiFi狀態改變?
問題: 我想知道這個代碼是如何必須是改變,以便時間只在某個事件發生時更新。例如:只有當WiFi狀態改變時才更新時間。
這裏是(希望)相關代碼段:
<!-- Broadcast Receiver -->
<receiver android:name=".WifiSSIDWidget" android:label="@string/app_name">
<intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/wifi_ssid_widget_provider" />
</receiver>
這裏的小部件類代碼:
public class HelloWidget extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new MyTime(context, appWidgetManager), 1, 1000);
}
private class MyTime extends TimerTask {
RemoteViews remoteViews;
AppWidgetManager appWidgetManager;
ComponentName thisWidget;
DateFormat format = SimpleDateFormat.getTimeInstance(SimpleDateFormat.MEDIUM, Locale.getDefault());
public MyTime(Context context, AppWidgetManager appWidgetManager) {
this.appWidgetManager = appWidgetManager;
remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
thisWidget = new ComponentName(context, HelloWidget.class);
}
@Override
public void run() {
remoteViews.setTextViewText(R.id.widget_textview, "TIME = " +format.format(new Date()));
appWidgetManager.updateAppWidget(thisWidget, remoteViews);
}
}
}
這是一個額外的接收器,我必須定義或我應該替換原來的?我也不確定我如何修改原始的'HelloWidget'代碼。你想介紹一下嗎? – memyself