0

特定のサイレンス機能を処理するアプリがありますが、電話がスリープ状態でコンピューターに接続されていないときは機能しません。画面がオンのときはすべて正常に機能しますが、電話がスリープ状態になると機能しなくなります。私が間違っていることは何か分かりますか?ここで他の 100 件の投稿を確認しましたが、問題を特定できません。

意図を作る私のアラームマネージャー:

Intent intent2 = new Intent(this, Silence.class);
PendingIntent pendingIntent2 = PendingIntent.getBroadcast(this, 1000 + id, intent2, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am2 = (AlarmManager)getSystemService(Activity.ALARM_SERVICE);
am2.setRepeating(AlarmManager.RTC_WAKEUP, cal2.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 7, pendingIntent2);

放送受信機:

public class MainSilenceCatcherVibrate extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent1) {
    WakeLocker.acquire(context);
    System.out.println("test");
    WakeLocker.release();
    }
}

マニフェストの使用法:

<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<receiver android:name=".Silence"></receiver>
<activity android:name=".ContactActivity"></activity>
4

1 に答える 1

0

自分の問題を特定できない

イベントはすぐに 1 回発生し、その後 1 週間は発生しません ( AlarmManager.INTERVAL_DAY * 7,)。おそらくあなたは一週間も待たなかったでしょう。

ここでは不要であることに注意してくださいWakeLocker。すべての作業が にある限りonReceive()、システムは を保持WakeLockします。1ミリ秒以上かかる作業がある場合は、 でそれを行いたくないonReceive()でしょうが、その場合は独自のソリューションをロールオーバーすることをお勧めします。WakefulBroadcastReceiverWakefulIntentServiceWakeLock

于 2013-10-12T11:56:18.927 に答える