0
我有這個小部件,它以秒或分鐘爲間隔進行更新。如何在爲其設置AlarmManager之前調用pendingIntent
添加窗口小部件來篩選PreferencesActivity後啓動,當用戶決定一切設置正確,他退出設置和我打電話的方法:
public class MyWidgetConfiguration extends PreferenceActivity {
// [...] Some code...
private void createWidget() {
Context c = getApplicationContext() ;
SharedPreferences sp = getSharedPreferences(PREF_NAME+widgetID, MODE_PRIVATE);
// Set layout
AppWidgetManager awm = AppWidgetManager.getInstance(c);
RemoteViews rv = new RemoteViews(c.getPackageName(), LAYOUT_ID);
awm.updateAppWidget(widgetID, rv);
// start alarm manager running this particular widget
Intent i = new Intent(c, MyWidgetReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(c, 0, i, 0);
AlarmManager a = (AlarmManager) c.getSystemService(Context.ALARM_SERVICE);
/**
* MY GUESS IS, THAT I'D HAVE TO ADD SOME KIND OF PendingIntent CALL HERE,
* I TRIED COUPLE OF THINGS, BUT MOST OF THEM INTERFERED OR CANCELLED FOLLOWING
* AlarmManager REPEATING...
*
* DELAY contains time left to closest full minute
*/
a.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + DELAY, MINUTE, pi);
/// return widget ID
Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetID);
setResult(RESULT_OK, resultValue);
finish();
}
// [...] More of some code...
}
所以,你在上面看到的,我打電話alarmManager每分鐘從第一整分鐘開始,一切正常,延時過後,但在此之前,我的小部件有點凍結了一段時間。我想避免這種情況,但是不需要爲Receiver添加任何額外的邏輯,因爲它甚至可以每秒調用一次。全部&原始代碼在這裏:http://goo.gl/uOP9P