2016-04-12 23 views
1

Uygulama çalışmıyor ve ekran kapalı olsa bile niyet almaya çalışıyorum.Uygulama kapalı veya ekran kapalı olsa bile Intent alma

Intent intent = new Intent(getBaseContext(), AlarmReceiver.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), 0, intent, 0); 
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
alarmManager.set(AlarmManager.RTC_WAKEUP, calSet.getTimeInMillis(), pendingIntent); 

AlarmReceiver sınıfı:

public class AlarmReceiver extends WakefulBroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.d("try", "try"); 
    } 
} 

Sorun: Uygulama çalışıyorsa, ben oturum sahip ve ekran açık. Ekranı kapatırsam, Günlük yok, ve açtığımda Günlük görünür.

Kodumda nerede hata yapıyorum? Bildirim: AlarmManager.set() davranışını alarmları erteleyebilirsin API 19. Android yana değişti

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.enjoyalarm.enjoyalarm"> 

    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

    <application 
     android:allowBackup="true" 
     android:debuggable="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme.NoActionBar"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".AlarmReceiverA" 
      android:label="@string/title_activity_alarm_receiver" 
      android:theme="@style/AppTheme.NoActionBar"> 
      <intent-filter> 
       <action android:name="com.enjoyalarm.enjoyalarm.AlarmReceiverA" /> 

       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 

     <receiver android:name=".AlarmReceiver"> 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 
     </receiver> 
    </application> 

</manifest> 
+1

Bildirim için WAKE_LOCK iznini eklediniz mi? – Blackkara

+0

@Blackkara Evet: '' – Tryam

+0

Alarm alıcınız bildirimde alıcı olarak bildirildi mi? – drulabs

cevap

0

etmemek için gereksiz yere pil ömrünü uzatmak için cihazı uyandırmak için. Uygulamanızı API 18 veya daha düşük bir fiyata hedefleyebilir ve Android, alarmınızı doğru zamanda tetiklemek için cihazı uyandırır.

Tam olarak uyandırmaya ihtiyacınız varsa ve uygulamanızı API 18 veya daha düşük bir hedefe yönelik olarak hedefleyemiyorsanız (yalnızca API 19 veya sonraki sürümlerde kullanılabilen özelliklere gereksiniminiz olduğundan), önerilen başka yöntemler de vardır. AlarmManager için çevrimiçi geliştirici belgelerinde bak:

Not: API 19 (KITKAT) alarm verme başlayarak inexact: OS açılışları ve pil kullanımını en aza indirmek için alarm kayacak. , sıkı teslimat garantilerine ihtiyaç duyan uygulamaları desteklemek için yeni API'lerdir; setWindow (int, uzun, uzun, PendingIntent) ve setExact (int, long, PendingIntent) öğelerine bakın. targetSdkVersion API 19'dan daha eski olan uygulamalar, tüm alarmların tam olarak talep edildiğinde teslim edildiği önceki davranışını görmeye devam edecektir.