4

デバイスがオンのときに動作していることをアンドロイドで思い出させるようにアラームを設定しました。しかし、デバイスのスイッチをオフにして再度オンにすると、リマインダー アラームが機能しません。この問題を解決する方法を教えてください。

私のコードは次のようになります。

Intent myIntent = new Intent(getApplicationContext(), serviceclass.class);
PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(),
    CONST+id, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);

Calendar calender = Calendar.getInstance();
calender.setTimeInMillis(System.currentTimeMillis());
calender.set(Calendar.HOUR_OF_DAY, hours);
calender.set(Calendar.MINUTE, ireminder.getMin());
calender.set(Calendar.SECOND, 0);
calender.set(Calendar.MILLISECOND, 0);  
calender.set(Calendar.DAY_OF_WEEK, day);

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,  

calender.getTimeInMillis(), 7 * AlarmManager.INTERVAL_DAY, pendingIntent);                
4

2 に答える 2

5

アラームは再起動時にクリアされます。

あなたができることは

  1. db テーブルにアラーム情報を保持する
  2. REBOOT_COMPLETED-イベントに登録する
  3. 再起動時に、アラームを再登録するバックグラウンド スレッドを開始します。アラーム時間を正しく計算していることを確認してください。

API を参照してください: 「デバイスがスリープ状態の間、登録されたアラームは保持されます (その間にアラームがオフになった場合は、オプションでデバイスを起動できます)。しかし、デバイスをオフにして再起動すると、アラームはクリアされます。」- http://developer.android.com/reference/android/app/AlarmManager.html

于 2011-05-09T19:12:44.750 に答える
1

クラス OnBootReceiver を作成する

public class OnBootReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        mgr.setRepeating(AlarmManager.RTC_WAKEUP,
        SystemClock.currentThreadTimeMillis(), AlarmManager.INTERVAL_FIFTEEN_MINUTES,
                    pi); 

    }

}

マニフェスト内

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

あなたの活動の中で

sendBroadcast(new Intent(this, OnBootReceiver.class));
于 2015-06-24T07:50:59.460 に答える