2017-01-16 11 views
-1

これは、アラームがどれくらい動作しないかは現実的ではありません。私はAndroidがアプリを殺すという2つの問題を抱えています。私が読んだものすべてがうまくいくはずだとは言っても、すべてが止まってしまいます。アラームがアプリで殺されている

私のAlarmManagerアイテムは、私のアプリケーションを緑化すると死にます。私にはGreenifyは電話をそこに置いてAndroidを殺すことと同じです。いずれにせよ、私は私のPwendingIntentを発射するのを待つキューに警報を鳴らすべきです。それ以外の場合は、アラーム設定のためにRTC_WAKEUPが有効です。

私のマニフェスト

<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コールでそれを打ち消します。私は長いその後、30分後の時間にアラームを設定すると

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); 
    } 
} 

の下を参照してくださいまたは私は3分後にアラームを設定して、私のアプリを緑化場合、私はLog.dが私のlogcatにプリントアウトが表示されませんビューア。 AlarmManagerは、私が読んで理解できるすべてのものから、私のBroadcastReceiverに発砲して動作させるべきです。

私は今までこれを働かせたら、私は詳細な説明を書いて、誰かがこの同じことをやっていないようにします。このshoudlがうまくいけば、私のアプリとの関連を殺しているかもしれない設定があるのですが、私はチェックを外す必要がありますか?

更新:

このコードは有効です。私は副次的なアプリケーション、Greenifyとの問題を抱えていましたが、それは私の直接的なやりとりとは離れていました。スクリーンが消えたら、そのアプリは私のアプリを殺していた。私のアプリに触れないようにGreenifyに指示した後、このコードは必要に応じて実行されました。明るい面では、コードで解決できなかった問題を解決するために10種類の方法を試したので、BroadcastReceiver、AlarmManager、Serviceの実装について多くのことを学びました。

+0

あなたのアプリが殺された場合、アラームが解除されると、Androidは受信機が有効になっていないことを確認します。この有効化はアプリケーションのライフサイクルを過ぎることはありません。だからそれは通り抜けません。それを有効にして、それが唯一の問題であるかどうかを確認してください。 –

+0

私は受信機を有効にしようとしましたが、それでも受信されません –

+0

そして、Greenifyは何を*正確に*しますか?アプリが強制停止状態になると、受信者やサービスは起動できません。 –

答えて

0

Greenifyが私のアプリケーションを殺していました。 OPのアップデートを参照

関連する問題