1

アプリケーションがメモリにないときにアラームマネージャブロードキャストが一部のデバイスで受信されない(アプリケーショントレイからスワップオフ)。それが動作していないデバイスはAPI 25で動作し、ONE PLUS 3デバイスです。同じことがNexus 6(API 25)でも機能します。アプリケーションがメモリにないときにアラームマネージャのブロードキャストが受信されない(ワンプラス3)

奇妙なことは、システムログでアラームがトリガーされているのがわかります。アラームが消えたら、下のログを見ることができます。ちょうどそのブロードキャストは受け取られません。再び、これは、アプリがメモリにないときにのみ発生します。アプリがメモリに入っていると、ブロードキャストが正しく受信されます。ここで

V/AlarmManager: Triggering alarm #0: 0 when =1508843147121 package=net.IntAppoperation =*walarm*:com.intapp.receivers.NOTIFICATION_ALARM

私はマニフェストでは、アラーム

を設定しています方法です:私はアラームを設定したい場合は、その後

<receiver android:name="com.intapp.receivers.ReminderReceiver" 
       android:exported="false" 
       android:enabled="true"> 
     <intent-filter> 
      <action android:name="com.intapp.receivers.NOTIFICATION_ALARM" /> 
     </intent-filter> 
</receiver> 

そして:ここ

public static final String ACTION = "com.intapp.receivers.NOTIFICATION_ALARM"; 

AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
Intent intent = new Intent(context, ReminderReceiver.class); 
intent.setAction(ACTION); 
int randomNum = new Random().nextInt(Integer.MAX_VALUE - 1 + 1); 
PendingIntent alarmIntent = PendingIntent.getBroadcast(context, randomNum, intent, PendingIntent.FLAG_ONE_SHOT); 
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
    alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), alarmIntent); // I get time from calendar instance in my function 
    } else { 
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
       alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), alarmIntent); 
      } else { 
       alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), alarmIntent); 
      } 
} 

は私の実装です受信機の:

public class ReminderReceiver extends BroadcastReceiver { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
     Log.d(TAG, "Receiver called "); 
     // my implementation 
    } 
} 

EDIT:

問題が少し大きいように思えます。私はCALL_STATEに登録して、着信/着信を聞くことができます。その放送受信機は、アプリがメモリにないときにも発砲しない。さらに、これはAPI25で動作しているSamsungデバイスでも発生します。一部のデバイスでは、この(マニフェストブロードキャストが動作しない)既知の問題がAPI25の既知の問題ですか?

答えて

0

私もOnePlus 3を持っている...そして、はい、これは同様に私に多くのことを起こります。私がBootReceiverのために登録しても。アプリケーションをアンインストールして再インストールして問題を解決しました。

ApplicationWakeLockを実装して、デバイスがアプリを強制終了しないようにして、BroadcastReceiverが有効のままであるようにすることをおすすめします。

レッツ希望OnePlusは、将来的に良いことを行います。

関連する問題