2012-10-26 56 views
2

主要活動 我有廣播接收器,待定意圖和警報管理器。它按照選定的時間觸發(System.currentTimeMillis()+ smstimeinmilliseconds)。android服務壽命延續

Intent intent = new Intent(this, DBBroadcastReceiver.class); 
intent.putExtra("message", message); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, id, intent, 0); 
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + smstimeinmilliseconds, pendingIntent); 

在選定的時間,這個掛起的意圖觸發廣播接收器。

public class DBBroadcastReceiver extends BroadcastReceiver 

@Override 
public void onReceive(Context context, Intent intent) 
{ 
message = intent.getStringExtra("message"); 

} 

我可以在活動中設置消息,並在鬧鐘管理器中設置時間。每個東西都完美無缺。我可以激活和停用這個。但是如果我在未來的時間裏設置了幾個鬧鐘管理器並重新啓動我的手機。所有的報警管理器銷燬.....

請按步驟和順序告訴我如何處理活動,廣播接收器和我是否需要服務,如果是的話我該如何使用它。

回答

1

您需要在啓動時調用BoradcastReceiver。

然後,你需要在你的清單:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

<receiver 
    android:name=".broadcasts.YourBroadcastReceiverName"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
</receiver> 

而這個廣播接收器需要重新安排所有報警。 喜歡的東西:

public class YourBroadcastReceiverName extends BroadcastReceiver { 

    private AlarmManagerFacade alarmManager; 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     // Retreive data related to alarms 
     Cursor cursor = context.getContentResolver().query(Alarm.CONTENT_URI, null, 
       Alarm.COLUMN_ACTIVE + " = ? ", 
       new String[] { String.valueOf(1) }, ""); 

     if (cursor.moveToFirst()) { 

      // Schedule all the active alarms. 
      alarmManager = new AlarmManagerFacade(context); 
      do { 
       // TODO : Schedule alarm according to data in cursor. 
      } while (cursor.moveToNext()); 
     } 
     cursor.close(); 
    } 
} 

(此代碼是從我的應用程序之一到來,一些對象是不是在Android SDK中提供)

爲了能夠重新安排所有的報警,你需要有他們存儲某處。

例如,您可以編寫自己的ContentProvider

  • 由於CursorAdapter部件的原因,它與其他Android組件配合良好。
  • 這不是最簡單的解決方案,但它是要遵循android指南的方法。

有可能是其他更簡單的選擇來存儲您的報警,如SharedPreferences

  • 它很容易使用。
  • 但是,您需要破解以友好的方式存儲多個鬧鐘。

最後一種選擇是,您可以創建一個包含信息的對象,將其序列化並將其作爲文件存儲在SD卡上。

  • 這是醜陋的,不靈活。
  • 但它並不難實現...

如果你想有一個仔細看看每個存儲選項,您可以在這裏文檔閱讀它:http://developer.android.com/guide/topics/data/data-storage.html

我希望所有這對你有幫助。:)

+0

只是瘋了,簡直太棒了。非常感謝。 – abidkhan303