4

onCreate内にAndroidsetInexactRepeatingを配置しましたが、これは起動しません。私はそれが実際に実行されていることを確認するためにその中にログを持っています、そしてそれは私がそれのために計画したイベントと同様に発火していないようです。10秒ごとに鳴らしたいのですが、初めてでも鳴らないようです。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Log.d("Restart", "First");
    Intent toRun = new Intent(this, AlarmRestart.class);
    PendingIntent pendingToRun = PendingIntent.getBroadcast(this, 0, toRun, 0);
    AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
    am.cancel(pendingToRun); 
    am.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, System.currentTimeMillis(), 10000L, pendingToRun);

    Log.d("Restart", "Second");
}

これは他のファイルにあります:

public class AlarmRestart extends BroadcastReceiver {
    public void onReceive(Context context, Intent intent) {
        Log.d("Restart", "Third");
    }
}

これは「adbshel​​ldumpsysalarm」が言うことです

com.packageName.restart
5715ms running, 64 wakeups
3 alarms: flg=0x14 cmp=com.packageName.restart/.AlarmRestart
61 alarms: flg=0x14 cmp=com.packageName.restart/.reciever.AlarmRestart
4

3 に答える 3

8

AlarmRestartですBroadcastReceiver。ではありませんService。しかし、あなたはを使用しようとしていますgetService() PendingIntent。それは機能しません。に変更getService()するとgetBroadcast()、幸運が訪れるはずです。

于 2012-07-30T20:13:11.250 に答える
5

私は問題を見つけました:/

        <reciever android:name="com.appName.restart.AlarmRestart" android:enabled="true" />

スペルト小麦の受信者....受信者ではありません。真剣に、XMLにはエラーチェッカーが必要です。彼は私が後で遭遇するであろう他のいくつかの問題を解決したので、私はまだCommonWaresの答えを受け入れられたものとしてマークしています。

于 2012-07-31T22:15:23.687 に答える
2

System.currentTimeMillis()の代わりに、ELAPSED_REALTIME_WAKEUPアラームでSystemClock.elapsedRealtime()を使用できます。

于 2012-11-16T14:44:53.010 に答える