1

私は周りを検索しようとしましたが、このようなエラーが発生したのは私だけのようです。そのため、誰かが私が間違ったことを指摘できるかもしれません。

AlarmManager私はこの関数を介して作成します:

public void startTimer() {
        Intent myIntent = new Intent(MainActivity.this, MyAlarmService.class);

        pendingIntent = PendingIntent.getService(MainActivity.this, 0,
                myIntent, 0);
        AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.add(Calendar.SECOND, 10);
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
                calendar.getTimeInMillis(),
                AlarmManager.INTERVAL_FIFTEEN_MINUTES / 50, pendingIntent);

        Toast.makeText(MainActivity.this, "Start Alarm", Toast.LENGTH_LONG)
                .show();
    }

期待どおりに作成されます。OnCreate()呼び出されてからOnStart()呼び出されます。次に、関数を呼び出してタイマーを停止します。

private void stopTimer() {
        Intent myIntent = new Intent(MainActivity.this, MyAlarmService.class);

        pendingIntent = PendingIntent.getService(MainActivity.this, 0,
                myIntent, 0);
        AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
        alarmManager.cancel(pendingIntent);
    }

そして、それは確かにこの呼び出しの後に停止されます。

その後、アプリが閉じられてからずっと後にAlarmManagerOnCreate()OnStart()メソッドが呼び出され、それらの呼び出しでシステムが簡単に見られない場合に、問題が発生します。これは私の電話に空きメモリがないときに起こるようですが。

何か案は?前もって感謝します!

4

1 に答える 1

0

サービスstopSelf()は、完了時に呼び出す必要があります。または、サービスの使用に切り替える必要があります。IntentServiceこれにより、サービスが完了すると自動的に呼び出さstopSelf()れます。現在、あなたはサービスをリークしており、Androidはしばらくしてサービスを破棄して再作成しています。

于 2012-12-15T13:48:17.213 に答える