2017-01-16 14 views
-1

Это становится нереальным, насколько сигнал тревоги не будет работать. У меня есть 2 проблемы с Android, убивающим мое приложение, и поэтому все останавливается, хотя все, что я читаю, говорит, что оно должно работать.Тревога убивается с помощью приложения

Пункт My AlarmManager умирает, когда я очищаю свое приложение, а Greenify мне то же самое, что позволяет телефону сидеть там и у Android его убивать. В любом случае, у меня должна быть тревога в ожидании, чтобы запустить мой PwendingIntent. В противном случае, что такое RTC_WAKEUP для настройки тревоги.

Мой Manifest

<receiver 
    android:name=".ContactAlarmReceiver" 
    android:enabled="false" 
    android:process=":alarmremote"> 
    <intent-filter> 
     <action android:name="com.example.johnbravado.zionwork.CONTACTALARM" /> 
     <action android:name="com.example.johnbravado.zionwork.NOTIFLTBTN" /> 
     <action android:name="com.example.johnbravado.zionwork.NOTIFRTBTN" /> 
    </intent-filter> 
</receiver> 

Мой приемник

@Override 
public void onReceive(Context context, Intent intent) { 
    // TODO: This method is called when the BroadcastReceiver is receiving 
    // an Intent broadcast. 
    //throw new UnsupportedOperationException("Not yet implemented"); 
    //Toast.makeText(context, "Received Alarm", Toast.LENGTH_SHORT).show(); 
    Log.d("johnbravadoCAR ","received"); 
    PowerManager powerManager = (PowerManager) context.getSystemService(POWER_SERVICE); 
    PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, 
      "com.example.johnbravado.zionwork"); 
    wakeLock.acquire(); 

    ComponentName component = new ComponentName(context, ContactAlarmIntentService.class); 
    context.getPackageManager() 
      .setComponentEnabledSetting(component, 
        PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 
        PackageManager.DONT_KILL_APP); 

    Intent alarmIntent = new Intent(context, ContactAlarmIntentService.class); 
    alarmIntent.putExtras(intent.getExtras()); 
    alarmIntent.setAction(intent.getAction()); 
    context.startService(alarmIntent); 
    wakeLock.release(); 
} 

Я знаю, что android:enabled="false" в манифесте. Я делаю это с помощью вызова PackageManager перед тем, как установить будильник. Ниже

private void setAlarm() { 
    //ContactAlarmReceiver contactAlarmReceiver = new ContactAlarmReceiver(); 
    //contactAlarmReceiver.setAlarm(getApplicationContext(), dateInMillis, phonenumberET.getText().toString(), firstnameET.getText().toString()); 

    ComponentName component = new ComponentName(this, ContactAlarmReceiver.class); 
    getPackageManager() 
      .setComponentEnabledSetting(component, 
        PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 
        PackageManager.DONT_KILL_APP); 

    AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
    Intent alarmIntent = new Intent(MyConstants.BROADCAST_ACTION_CONTACT_ALARM); 
    alarmIntent.putExtra("phone", phonenumberET.getText().toString()); 
    alarmIntent.putExtra("name", firstnameET.getText().toString()); 

    PendingIntent pi = PendingIntent.getBroadcast(this, 123456, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
    if (Build.VERSION.SDK_INT >= 23) { 
     am.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, dateInMillis, pi); 
    } else if (Build.VERSION.SDK_INT >= 19) { 
     am.setExact(AlarmManager.RTC_WAKEUP, dateInMillis, pi); 
    } else { 
     am.set(AlarmManager.RTC_WAKEUP, dateInMillis, pi); 
    } 
} 

После того, как я поставил будильник на некоторое время дольше, чем 30 минут, или если я установить сигнализацию в течение 3 минут и Greenify моего приложения, я не вижу Log.d печати в моем LogCat зритель. AlarmManager, из всего, что я могу читать и понимать, должен срабатывать для моего BroadcastReceiver и работать.

Если я когда-либо получаю это на работу, я собираюсь написать подробное объяснение, чтобы кто-то еще не прошел через эту же вещь. Если этот shoudl работает, есть ли какие-то настройки, которые могут убивать ассоциации с моим приложением, мне нужно снять флажок?

Обновление:

Этот код твердый. У меня возникла проблема со вторичным приложением Greenify, которое каким-то образом было отключено от моего прямого взаимодействия. Это приложение убивало мое приложение, когда экран погас. После того, как Greenify не прикасался к моему приложению, этот код выполнялся по мере необходимости. С яркой стороны я много узнал о реализации BroadcastReceiver, AlarmManager и Service, так как я пробовал как 10 различных способов борьбы с проблемой, которую я не мог решить с помощью кода.

+0

Если ваше приложение убито, когда будильник погаснет, Android увидит, что ресивер не включен. Разрешение не продлится до жизненного цикла приложения. Так что это не может пройти. Попробуйте включить его и убедитесь, что это единственная проблема. –

+0

Я попытался включить приемник, и он все еще не получен –

+0

И что делает Greenify делать * точно *? Если приложение ставит приложение в состояние остановки, то никакие приемники или службы не могут запускаться. –

ответ

0

Greenify убивает мое приложение. См. Обновление в OP

 Смежные вопросы

  • Нет связанных вопросов^_^