2016-04-03 5 views
1

AndroidManagerでAlarmManagerを学習しようとしています。AlarmManager.ELAPSED_REALTIME_WAKEUPの使用を理解するためにdocを見つけました。しかし、これを私のアプリで使用したとき、アラーム間隔の時間がここにAlarmManager.ELAPSED_REALTIME_WAKEUPはandroidで何を行うのですか

alarmMgr.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
       SystemClock.elapsedRealtime()+10*1000, alarmIntent); 

を設定するが、何もhappens.Please somenoneがAlarmManager.ELAPSED_REALTIME_WAKEUPの意味を説明した後、再び活動を呼び出すことアラームマネージャを考えて戻るボタンをクリックします。 AlarmManager.ELAPSED_REALTIME_WAKEUPとは対照的に、私はAlarmManager.RTC_WAKEUP使用する

MainActivity.java

public class MainActivity extends AppCompatActivity { 
    private AlarmManager alarmMgr; 
    private PendingIntent alarmIntent; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     alarmMgr = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE); 
     Intent intent = new Intent(this, AlarmReceiver.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     alarmIntent = PendingIntent.getActivity(this, 0, intent,0); 
     Log.d("asd","initialized alarmintent"); 
     alarmMgr.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
       SystemClock.elapsedRealtime()+10*1000, alarmIntent); 

         Log.d("asd", "alarm set"); 
    } 
} 

AlarmReceiver.java

public class AlarmReceiver extends AppCompatActivity 
{ 
    TextView tv; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.intent_layout); 
     Log.d("asd","writing textview"); 
     tv=(TextView)findViewById(R.id.textview); 
     tv.setText("called"); 
    } 
} 
+0

「しかし、何も起こらない」: あなたは、マニフェストでのようなものをお使いAlarmReceiverの活動を宣言していることを確認しますマニフェストLogCatでメッセージがないかチェックしてください。 – CommonsWare

+0

@ CommonsWare、私は、マニフェストファイルでAlarmReceiverのエントリを作成しました。これは、アラームが発生したときに呼び出すクラスです。 – a874

答えて

1

MainActivity.class:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Intent intent = new Intent(this, AlarmReceiver.class); 
    final PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); 

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

    // Cancel any existing service(s) 
    mAlarmManager.cancel(pendingIntent); 

    // Start service 
    long alarmTime = System.currentTimeMillis() + 10000L; // 10 seconds from now 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
     mAlarmManager.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, alarmTime, pendingIntent); 
    } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
     mAlarmManager.setExact(AlarmManager.RTC_WAKEUP, alarmTime, pendingIntent); 
    } else { 
     mAlarmManager.set(AlarmManager.RTC_WAKEUP, alarmTime, pendingIntent); 
    } 
} 

AlarmReceiver.class:ここで私は、最近のアプリでAlarmManagerを使用していたかの例がある

それはあなたのAlarmReceiverクラスが AppCompatActivityを拡張したように思える
public class AlarmReceiver extends BroadcastReceiver { 

    public AlarmReceiver() { } 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Toast.makeText(context, "AlarmService Triggered.", Toast.LENGTH_SHORT).show(); 
     Log.d(this.getClass().getSimpleName(), "Service triggered"); 
    } 
} 

それはうまくいきません - 私がしたようにあなたはBroadcast Receiverを拡張する必要があります。その後、AlarmReceiverでonReceive()関数内で、あなたはこのように、ご希望のアクティビティに移動する必要があります。

Intent newIntent = new Intent(context, NewActivity.class); 
context.startActivity(newIntent); 

これらの変更を試してみて、彼らが働くかどうかを確認します!

+0

、AlarmManager.ELAPSED_REALTIME_WAKEUPの使用方法を説明できますか? – a874

+0

@ a874ここでの説明を参照してください - http://developer.android.com/training/scheduling/alarms.html#set - ELAPSED_REALTIME_WAKEUPはスケジューリング作業のためのものですが、RTCは実際の "アラーム"の方が多くです。つまり、自分の実装ではまだRTCが好きです。 – privatestaticint

0

コードは正常に動作するはずです。 - おそらく、このようなことはに登録されていないとして、妙な名前の `AlarmReceiver`、との問題があり

<activity 
     android:name=".AlarmReceiver" 
     android:label="@string/title_activity_alarm_receiver" 
     android:theme="@style/AppTheme.NoActionBar"></activity> 
関連する問題