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

回答

0

PendingIntent可能會調用其他地方寫的代碼。爲什麼不在設置鬧鐘後直接調用相同的代碼?

相關問題