2012-03-29 10 views
9

私は日付を設定する必要があり、その特定の日付に9時に、私は通知を行う必要がありますアプリを行う必要があります。それを行う最も簡単な方法は何ですか(電話を再起動したり、バッテリーを取り出してもアプリケーションを動作させたい)。AlarmManagerはソリューションですか?特定の日付にAndroidの通知を

+12

バッテリーを使わずにアンドロイドがどのように動作すると思いますか? :) – waqaslam

+0

私はまだ私は再びアプリにアクセスせずにその通知を得ることができることを意味した – user1253236

+0

OPは明らかに彼/彼女がバッテリーを取り出して置き換える場合を意味した。 –

答えて

15

1 /アクションを起動するにはBroadcastReceiverクラスを宣言し、このクラスは、あなたの活動内であってもよく、または外の他のJavaファイルでのごのonCreateメソッド内

public class Receiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 
     Toast.makeText(context, intent.getStringExtra("param"),Toast.LENGTH_SHORT).show(); 
    } 

} 

2 /このコードを入れ

AlarmManager alarms = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE); 

    Receiver receiver = new Receiver(); 
    IntentFilter filter = new IntentFilter("ALARM_ACTION"); 
    registerReceiver(receiver, filter); 

    Intent intent = new Intent("ALARM_ACTION"); 
    intent.putExtra("param", "My scheduled action"); 
    PendingIntent operation = PendingIntent.getBroadcast(this, 0, intent, 0); 
    // I choose 3s after the launch of my application 
    alarms.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+3000, operation) ; 

3秒後にToastが表示されるので、 "System.currentTimeMillis()+ 3000"を変更することができます。

+0

完璧に動作します。これは答えとして受け入れられるべきです。 – user1531978

3

android serviceとしてアプリを作成する必要があります。

サービスは、バックグラウンドで長時間実行する 操作を実行でき、ユーザーインターフェイスを提供しないアプリケーションコンポーネントです。 別のアプリケーションコンポーネントがサービスを開始することがあり、ユーザが別の アプリケーションに切り替わったとしても、 がバックグラウンドで実行され続けます。さらに、コンポーネントは、 と通信し、プロセス間通信(IPC)を実行するサービスにバインドすることもできます。 例えば、サービスはネットワークトランザクションを処理したり、音楽を再生したり、 ファイルのI/Oを実行したり、コンテンツプロバイダと対話したりすることがあります。

1

アラームマネージャは私が推測する解決策です。アラームマネージャを特定の時間に設定してから、オンスタートで通知を呼び出さなければなりません。これはサービス内で実装する必要があります。私はそれが助けて欲しいと思います。

+0

いいえ、それはありませんでしたが、とにかく感謝 – user1253236

4

AlarmManagerを使用して、アラームをRTC_WAKEUPタイプに設定する必要があります。 docsから

アラームがオフになると、それのために登録されていたテントがシステムによって放送さ 、それはまだ実行されていない場合が自動的にターゲットアプリケーション を開始しています。 デバイスが眠っている(そして、彼らはその時に をオフに行く場合をデバイスを起動オプションで可能)、それがオフになっていると がを再起動した場合にクリアされますしながら、登録されたアラームは保持されます。

だから、これは意味:あなたはこれを達成するために継続的に実行されているサービスを必要としない

  • デバイスの再起動後にアラームを再登録するには、BOOT_COMPLETE イベントをリッスンするために、BroadcastListenerが必要な場合があります。あなたはそれが私のために仕事だ、このコードを試してみてくださいAlarmManager

    を使用することができますアクションをスケジュールする

関連する問題