在我的應用程序中,我需要發送通知的時間是1周,或者是用戶在應用程序中執行了一些操作後的1個月內發送的通知...它與此類BroadcastReceiver一起工作>>重新啓動後恢復報警計數器
public void startMyReceiver() {
Long time = new GregorianCalendar().getTimeInMillis() + 1000 * 60 * 60 * 24 * 30; <-- for 1 month (it's getting numeric overflow, but is working)
Long interval = 2592000000L;
Intent intentAlarm = new Intent(this, MyReceiver.class);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, time, interval, PendingIntent.getBroadcast(this, 2, intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT));
}
那麼簡單的接收器類>>
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent){
sendNotification();
{
}
然後在AndroidManifest.xml >>
<application>
<receiver android:name="mypackage.MyReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
我已經設置了「android.intent.action.BOOT_COMPLETED」,認爲它將恢復計數器並繼續計數直到時間結束...
但是它在設備啓動時立即啓動我的接收器...
如何將接收器設置爲1個月,然後在重新啓動後繼續計數?
- 編輯 - 新的問題 -
如何將存儲的時間和做計算最簡單的方法?像這樣? >>
1 - 首次定義警報時,我將當前時間以毫秒爲單位保存在Long firstTime中,並將警報定義爲firstTime + longOneMonth;
2 - 在接收機開機,我再次獲取當前時間,並將其保存在龍rebootTime,然後我做的:
Long timeDifference = rebootTime - firstTime;
Long differenceToMonth = longOneMonth - timeDifference;
,並重新設置接收機時間rebootTime + differenceToMonth?
- EDIT 2 -
也許,如果我轉換的第一接收機設置millisseconds的日期字符串和應用()到共享偏好,重新啓動的時候,我可能會再次將其轉換成millisseconds .. 。我想這會工作,更容易
保存和sharedPreferences,文件或數據庫檢索。首先可能是最簡單的。 – MikeT
請在主文件中添加一個新問題 –