2010-11-29 52 views
2

我有一個需要監聽BATTERY_CHANGED事件的小部件,但是,由於此事件受到保護,無法從清單中聲明我從應用程序構造函數創建一個新的BroadcastReceiver:即使未從Manifest實例化,仍然保持widget的BroadcastReceiver活着

public void onCreate() { 
    super.onCreate(); 
    if (DEBUG) Log.d(TAG, "onCreate()"); 
    // Register receivers   
    if (receiver == null) { 
     receiver = new MYReceiver(this); 
    } 
    // Create new intentfilter 
    IntentFilter intentFilter = new IntentFilter(); 
    intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED); 
    registerReceiver(receiver, intentFilter); 
} 

然後,從Receiver我調用AppWidgetProvider的靜態方法,它使用RemoteViews實際更新小部件。一切都一直運轉良好,直到1小時後,我的Receiver消失,小部件不再更新。我與2.2.1固件的

我在做什麼錯在Droid的測試呢?這是更新小部件的正確方式(我只需要該事件,所以如果不需要它,我不想要服務)。我是否應該時常使用AlarmManager來確保我的接收器仍在那裏?我可以這樣做嗎?

謝謝。

回答

0

我沒有線索,爲什麼您的接收器得到了一個小時後,失去了但怎麼樣使用AlarmManager定期檢查它是否仍然存在?所以你可以重新註冊它,如果它迷路了。

+1

是的,這就是解決方案我到目前爲止已經實施,以避免這一點,但是我需要一個4-5分鐘計時器做到這一點,它不是那麼幹淨,因爲它會運行,即使小部件接收機仍達,我是無論如何,希望能有更好的解決方案,謝謝。 – JohnUopini 2010-12-02 09:33:49