2017-11-21 10 views
-1

EclipseのPahoアンドロイドライブラリを使用しています。このライブラリは内部的にサービスを開始してデータを取得します。今では私のアプリがバックグラウンドでプッシュ通知が来ると、Pahoのサービスはプレオレオデバイスでうまく機能します。しかし、Oreoのデバイスでは、アプリがバックグラウンドの状態に移行してから数分かかることがあります。この期間が経過すると、GCMメッセージを優先して送信しますが、サービスは開始せず、logcat Background start not allowedで警告を出します。オフィシャルドキュメントのstatedとして、優先度の高いGCMメッセージの場合、アプリは数分間ホワイトリストになります。この場合、優先度の高いGCMメッセージに対して機能するはずです。Android Oreoのバックグラウンド制限

高優先度のGCMが届くたびに、アプリがホワイトリストに登録されるはずです。それが正しいか?

+0

からここにコードを入れましたが – AmanKumar

答えて

1

は、Android Oの準備ができてするには、次の代わりにIntentServiceの

1)。サービスがJobIntentServiceを拡張する必要があります。

2)onHandleIntentの代わりに。 onHandleWorkを使用する必要があります。

3)startServiceの代わりに。 enqueueWorkを使用する必要があります。

これをチェックしてください。 https://developer.android.com/reference/android/support/v4/app/JobIntentService.html

ブロードキャストを扱う場合、インテントが明示的であることを確認する必要があります。

private static void sendImplicitBroadcast(Context ctxt, Intent i) { 
    PackageManager pm=ctxt.getPackageManager(); 
    List<ResolveInfo> matches=pm.queryBroadcastReceivers(i, 0); 

    for (ResolveInfo resolveInfo : matches) { 
     Intent explicit=new Intent(i); 
     ComponentName cn= 
       new ComponentName(resolveInfo.activityInfo.applicationInfo.packageName, 
         resolveInfo.activityInfo.name); 

     explicit.setComponent(cn); 
     ctxt.sendBroadcast(explicit); 
    } 
} 

このhttps://commonsware.com/blog/2017/04/11/android-o-implicit-broadcast-ban.html

関連する問題