サービスを備えたアプリケーションを構築しています。すべてのアプリケーションコンポーネントが同じUIプロセスで実行されることは知っていますが、少なくともマニフェストで指定します。したがって、ANRのメッセージを回避するには、3つの方法があります。
android:process = ":remote"のような別のプロセスで実行するようにマニフェストでサービスを指定しますが、バッテリーとCPU処理を大量に消費するため、これはお勧めできませんというStackOverflowの投稿を読みました。それらの投稿は信頼できる人々からのものなので、私は本当に尊敬しています。IntentServiceを使用します。それはおそらく良い方法です。ただし、アクティビティが表示されていなくても、サービスを実行する必要があります。サービスが必要なため、他のユーザーからの新しいメッセージがないかWebサービスをチェックし続け、通知を通じて通知します。IntentServiceを使用して可能でしょうか?それはエレガントな解決策です。
ローカルサービスを使用します。マニフェストファイルからandroid:process = ":remote"属性を削除するだけです。しかし、いくつかの...OnMainThreadExceptionエラーが発生します。つまり、これらの長時間実行される操作を実行したり、AsyncTaskを使用したりするには、特別なスレッドを作成する必要があります。
多分それをする別の方法があります。サービスで長時間実行操作を実行する方法を教えてください。本当に不可欠です。
ありがとう。