2016-05-22 4 views
-1

私は以下のコードを使用しています。 しかし、それは期待通りに機能しません。アプリが終了しても毎日午前12時にアンドロイドアプリを起動するには

AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
Intent intent = new Intent(context, MyReciever.class); 
intent.putExtra(ONE_TIME, Boolean.TRUE); 
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0); 
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 
     20*1000, pi); 

このコードは20秒に1回実行されますが、20 * 1000で24 * 60 * 60 * 1000に置き換えた場合、1日に1回実行されます。

今日私が4:00 PMをインストールすると、私が24時間に1度与えたので、私が上に書いたロジックは午前12時に実行されないと思います。

適切な例で適切なロジックを教えてください。

本当にありがとうございます。事前

+0

あなたのアプリが初めて実行されている時刻を取得し、時間を計算午前12:00に残ります。その後、最初にその値でalarmmanagerを作成します。 – pooyan

+0

初めて時刻を取得して午前12時までの時間を計算し、その後、カレンダーオブジェクトを使用して正確な時刻を設定し、アラームマネージャーに渡します(calendar.get time();) – androidnoobdev

答えて

0

おかげで、これを試してみてください:

//計算になりました:

long now = System.currentTimeMillis(); 

//ミリ秒単位で明日計算します

Calendar cal = Calendar.getInstance(); 
cal.add(Calendar.DAY_OF_MONTH, 1); // Add a day 
cal.set(Calendar.HOUR_OF_DAY, 0); // Set to 12:00 
cal.set(Calendar.MINUTE, 0); 
cal.set(Calendar.AM_PM, Calendar.PM); 
long tomorrow = cal.getTimeInMillis(); 

//間の間隔を計算します今日と明日

long interval = tomorrow - now; 

ここで、20 * 1000を間隔で置き換えます。

カレンダーに1日を追加することに注意してください。したがって、朝に8.00時にアラームを設定すると、12:00にアラームが鳴ります。

+1

欲しいのは忘れないでくださいそれは毎日働いて、最初のアラームマネージャーの応答結果クラスにそのタイマーが24時間に設定されている(私は晴れていることを望む)新しいアラームマネージャーを作成する必要があります))。 – pooyan

0

私の質問に対する貴重なご意見ありがとうございます。 私のアプリに実装したものは正確な答えです。このロジックでは、私のアプリは正確に10分間隔で午前12時以降に起動します.10分ごとに実行を続けます。

コード実行し続ける停止する

Calendar cal = Calendar.getInstance(); 
cal.set(Calendar.HOUR_OF_DAY, 0); // Set to 12:00 
cal.set(Calendar.MINUTE, 0); 
long tomorrow = cal.getTimeInMillis(); 
AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
Intent intent = new Intent(context, MyReciever.class); 
intent.putExtra(ONE_TIME, Boolean.TRUE); 
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0); 
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 
10*60*1000, pi); 

以下のように、Androidはなど AlarmManager.Hour、Fifteenminutes、Halfday、以下のように長い間隔を提供するために、SPLのAPIを提供し、。

おかげ Krishh

関連する問題