私は、アクティビティとサービスで構成されるAndroidアプリを持っています。現在、それらは同じプロセス内に存在し、同じヒープを使用していますが、サービスのプロセス/ヒープを分けなければなりません。つまりサービスがアクティビティに完全に依存しないようにして、アクティビティがクラッシュした場合でもサービスに影響を与えないようにします。しかし、私は彼らが単一のアプリケーションとしてインストール可能であることを望んでいます。これは可能ですか?個別のプロセスを使用するAndroidアクティビティとサービスを作成する方法
答えて
確実に可能です。引用するAndroidManifest.xml
http://developer.android.com/guide/topics/manifest/service-element.html
にservice
ためprocess
属性を参照してください:
サービスが実行されるプロセスの名前を。通常、アプリケーションのすべてのコンポーネントは、アプリケーション用に作成されたデフォルトのプロセスで実行されます。アプリケーションパッケージと同じ名前です。要素のprocess属性は、すべてのコンポーネントに対して異なるデフォルトを設定できます。しかし、コンポーネントは独自のプロセス属性でデフォルトを上書きできるため、アプリケーションを複数のプロセスに分散することができます。
この属性に割り当てられた名前がコロン( ':')で始まる場合、アプリケーションに必要な新しいプロセスが作成され、そのプロセスでサービスが実行されます。プロセス名が小文字で始まる場合、サービスはその名前のグローバルプロセスで実行されます。これにより、異なるアプリケーションのコンポーネントがプロセスを共有し、リソースの使用を削減できます。
サービスのIPCは、サービスが他のアプリケーションによって消費される必要がある場合にのみ必要です。
独自のプロセスでサービスを実行すると、サービスのガベージコレクタがアプリケーションに影響を与えず、単独で実行するとサービスのメモリフットプリントが少し小さくなるという小さな利点があります。
他のアプリケーションによるサービスの使用が必要ない場合は、ローカルサービスを使用することをお勧めします。また、独自のプロセスでサービスを実行し、アプリケーションとのさまざまな通信を使用することもできます(例:放送受信機を介して受信する。私はAndroidサービスのチュートリアルで以下のリンクの異なるアプローチを説明しようとしました:Activity and service communication。
は、(分離されたプロセスでのサービスではありません)アクティビティを呼び出すときにサービスが独自のonDestroyを呼び出さないようにする唯一の方法はありますか? – EsmaeelQash
こんにちはVogella、私は "他のアプリケーションでサービスを消費する"とは言いませんが、私はこの言葉を得ていません。 thanks – SRam
サービスを別のプロセスで実行すると、メインアプリケーションのプロセスが終了した場合でもサービスを継続できるようになります。これは非常に便利です。 – Luca
- 1. asp.netのメインアプリケーションとは別のサービスを作成する方法
- 2. LINQ - 別個のアイテムのリストを作成する方法
- 3. Wordpressでサブスクライバーレベルの個別登録フォームを作成する方法
- 4. MDC-web個別のcssファイルを作成する方法コンポーネント
- 5. "個別の"オブジェクトを作成する方法
- 6. Android MVPアーキテクチャでサービスとアクティビティを分離する方法は?
- 7. 別のアクティビティから動的なタブを作成する方法
- 8. Androidのアクティビティのアイコンを作成する方法は?
- 9. Androidのアクティビティでマルチカラーの背景を作成する方法
- 10. Android他のプロセスからアクティビティを終了する方法
- 11. 対象となるクエリを使用するための個別インデックスの作成
- 12. Google Playサービスを使用するAndroidライブラリを作成する
- 13. Androidでアクティビティを再作成するときにDatabaseHelperを使用する
- 14. fork()を使用して子プロセスから子プロセスを作成する方法は?
- 15. Androidの別のアクティビティからのアクティビティのメソッドと変数を使用する
- 16. RelativeLayoutを使用してn個のボタンで同じサイズのアクティビティを作成する方法は?
- 17. 別個の親と子を持つグラフ構造を作成する方法
- 18. アクティビティ遷移を使用すると、ビューが個別に/個別に遷移しています
- 19. C++/Eclipseでインクルード用のライブラリを個別に作成する方法
- 20. ListViewsでタブ付きアクティビティを作成する方法 - Android
- 21. GETメソッドを使用してSOAPサービスを作成する方法
- 22. JavaでWebサービスを作成する方法(Eclipseを使用)
- 23. 音楽サービスを別のプロセスで実行する方法
- 24. jdeveloperを使用してBPELプロセスで変数を作成/使用する方法
- 25. キーボードのアクティビティをAndroidで作成する
- 26. windowMangerサービスでフラグメントまたはアクティビティを使用する方法
- 27. アクティビティのデータをAndroidの別のアクティビティに渡す方法
- 28. Azureサービスファブリックは、すべてのサービスに対して個別のプロセスを作成しますか?
- 29. 別のフレームワークを使用する動的フレームワークの作成方法
- 30. Android:特定のプロセスとアクティビティのサービス間のオブジェクトの共有
ニース。 @lyricsboyでも質問:OPのシナリオでは、Androidがアクティビティ(つまり、アプリ)を抹殺するときに、実行中のサービスが同じプロセスであればそれを殺してしまいますか? –
サービスの開始方法(どのモード)とメモリに関連するその他の要因によって異なります。より詳細な情報はhttp://developer.android.com/guide/topics/fundamentals/processes-and-threads.html – lyricsboy
ありがとうございました – chris