[解決済み] Android 8.0: java.lang.IllegalStateException: Not allowed to start service Intent
質問
アプリケーションの起動時に、ネットワークタスクを行うべきサービスを起動します。 APIレベル26をターゲットにした後、私のアプリケーションはAndroid 8.0のバックグラウンドでサービスを開始することに失敗しました。
<ブロッククオート原因:java.lang.IllegalStateException: Not allowed to start サービス インテント { cmp=my.app.tt/com.my.service }: アプリはバックグラウンドにある uid UidRecord{90372b1 u0a136 CEM idle procs:1 seq(0,0,0)}: アプリがバックグラウンドで動作している。
に関連すると理解しています。 バックグラウンドの実行制限
startService() メソッドは、以下の場合 IllegalStateException をスローするようになりました。 Android 8.0 をターゲットとするアプリが、このメソッドを使用しようとしている状況です。 バックグラウンドサービスの作成が許可されていません。
" 許されない状況で " - 実際には何を意味するのでしょうか?また、それを修正する方法。私は自分のサービスをフォアグラウンドに設定したくありません。
どうすればいいですか?
許可された状況は、バックグラウンドサービスがAndroid O以前と同じ動作をする一時的なホワイトリストです。
特定の状況下で、バックグラウンドアプリは数分間、一時的なホワイトリストに掲載されます。アプリがホワイトリストに登録されている間は、制限なくサービスを起動でき、そのバックグラウンドサービスの実行が許可されます。アプリがホワイトリストに登録されるのは、次のような、ユーザーから見えるタスクを処理する場合です。
- 優先度の高いFirebase Cloud Messaging(FCM)メッセージの処理。
- SMS/MMSメッセージのようなブロードキャストを受信する。
- 通知からPendingIntentを実行する。
- VPNアプリがフォアグラウンドに昇格する前に、VpnServiceを開始する。
出典 https://developer.android.com/about/versions/oreo/background.html
つまり、バックグラウンド・サービスがホワイトリストの要件を満たしていない場合、新しい ジョブスケジューラ . これは基本的にバックグラウンド・サービスと同じですが、バックグラウンドで継続的に動作するのではなく、定期的に呼び出されるようになっています。
IntentServiceを使用している場合、JobIntentServiceに変更することができます。詳しくは @kosev さんの 答えは以下の通り .
関連
-
[解決済み】パッケージ名(Google Analytics)に一致するクライアントが見つからない - 複数のproductFlavorsとbuildTypes
-
[解決済み] [Solved] Unsupported method: ベースコンフィグ.getApplicationIdSuffix()
-
[解決済み】Android Studioです。「プロジェクトが C ドライブに作成されている場合、「タスク ':app:mergeDebugResources' の実行に失敗しました。
-
[解決済み】ビットマップを保存する場所について
-
[解決済み】'dependencies' を '(groovy.lang.Closure)' に適用できない。)
-
[解決済み】アクティビティにない場所でのgetLayoutInflater()の呼び出し
-
[解決済み] サポートされていないメソッドです。BaseConfig.getApplicationIdSuffix()がサポートされていません。
-
[解決済み] Android M パーミッション : shouldShowRequestPermissionRationale()関数の使用方法について混乱しています。
-
[解決済み] Androidでサービスが稼働しているかどうかを確認する方法を教えてください。
-
[解決済み] AndroidプラットフォームにおけるServiceとIntentServiceの比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】インストールエラー。インストールエラー:install_failed_older_sdk
-
[解決済み】コンテンツには、id属性が「android.R.id.list」であるListViewが必要です。
-
[解決済み】java.lang.RuntimeException: アクティビティを開始できない ComponentInfo
-
[解決済み] ユーザーが拒否する可能性のあるパーミッションが必要なコール
-
[解決済み】onCreateOptionsMenu(Menu メニュー)とは何ですか?)
-
[解決済み】リストビューにonclicklistenerを追加する(android)
-
[解決済み] TypeError: cb.apply は関数ではありません。
-
[解決済み] コンパイルした.apkを端末にインストールしようとするとINSTALL_FAILED_UPDATE_INCOMPATIBLEが表示される
-
[解決済み] Android 8.1へのアップグレード後、startForegroundに失敗する。
-
[解決済み】パーミッションの拒否:startForegroundはandroid.permission.FOREGROUND_SERVICEを必要とします。