重複の可能性:
再起動後にウィジェットが機能しないのはなぜですか?
サービスを通じて定期的に更新される appwidget があります。システムを再起動すると、appwidget が表示されなくなり、クリック サービスに応答しなくなります。放送受信機を使用してサービスを開始しようとしていますが、今のところうまくいきません。何が間違っている可能性がありますか? ...
ここにBroadcastReceiverがあります:
public void onReceive(final Context context, Intent intent) {
Log.d(TAG, "received boot completed broadcast receiver... starting service");
mycontext = context;
String action = intent.getAction();
if(action.equals(Intent.ACTION_BOOT_COMPLETED)){
int[] allids = AppWidgetManager.getInstance(context).getAppWidgetIds(new ComponentName(context, WeatherWidgetProvider.class));
for(int appWidgetId:allids){
Intent weatherSettings = new Intent(context, WeatherService.class);
weatherSettings.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
mycontext.startService(weatherSettings);
}
}
}
これは、サービスから appwidget を取得する方法です。
public void onStart(Intent intent, int startId){
context = getApplicationContext();
if(intent.getExtras()!= null){
appWidgetId = intent.getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID); //get this here, also from the configuration class
}
RemoteViews remoteView = new RemoteViews(getApplicationContext().getPackageName(), R.layout.weather_appwidget);
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(getApplicationContext());
/*get sharedPreferences Value*/
prefs = context.getSharedPreferences(WeatherForecastConfigure.WEATHER_PREF_NAME, MODE_WORLD_READABLE);
city = prefs.getString(CITY + appWidgetId,"nothing");
chk_celsius = prefs.getBoolean(CHECKED_CELSIUS + appWidgetId, true);
updateRate = WeatherForecastConfigure.convertToMillis(prefs.getInt(REFRESH_UPDATE + appWidgetId, 1));
//web service call and update the widget here
}
構成クラスからも appwidgetId を取得しているため、別のインテント アクションを指定する必要があるかどうかわかりません。ありがとうございました。