私は、アクティビティとサービスで構成される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. 別のアクティビティから動的なタブを作成する方法
- 3. Androidのアクティビティのアイコンを作成する方法は?
- 4. C++/Eclipseでインクルード用のライブラリを個別に作成する方法
- 5. RelativeLayoutを使用してn個のボタンで同じサイズのアクティビティを作成する方法は?
- 6. Androidでアクティビティを再作成するときにDatabaseHelperを使用する
- 7. JavaでWebサービスを作成する方法(Eclipseを使用)
- 8. jdeveloperを使用してBPELプロセスで変数を作成/使用する方法
- 9. キーボードのアクティビティをAndroidで作成する
- 10. 別のアクティビティで文字列配列を使用する方法
- 11. Androidで「オーバーレイ」アクティビティを作成する
- 12. msiインストーラと別個のインストールファイルを作成する
- 13. アクティビティをAndroidでサービスにする方法は?
- 14. elasticsearchに2つのバケットを個別にソートするスクリプトの作成方法
- 15. NSPredicateを使用する個別のオブジェクト
- 16. Androidのアクティビティ用のモックオブジェクトの作成方法(Junit)
- 17. HTML5を使用してAndroidアプリケーションを作成する方法
- 18. アンドロイドの別のアクティビティでアクティビティを作成することはできますか?
- 19. Androidプロセスがクラッシュしたときにクラッシュログを作成する方法
- 20. Android - 別のアクティビティでスレッドを一時停止する方法
- 21. phpを使用してIphoneとipadを個別に検出する方法
- 22. 名前付きクエリを個別のファイルに作成する方法
- 23. Android:アクティビティとサービスの間で使用されるシングルトン
- 24. Robotiumを使用して他のプロセスからアクティビティを実行する方法
- 25. WCFサービスを作成する方法
- 26. アクティビティをサービスに移動する方法
- 27. アクティビティ全体で使用できるAlertDialogを作成する方法
- 28. 別のアクティビティでアクセスする別個のダウンローダクラス(別スレッド)
- 29. 個人用のダウンロードリンクを作成する
- 30. 親プロセスに応じて子プロセスを作成する方法は?
ニース。 @lyricsboyでも質問:OPのシナリオでは、Androidがアクティビティ(つまり、アプリ)を抹殺するときに、実行中のサービスが同じプロセスであればそれを殺してしまいますか? –
サービスの開始方法(どのモード)とメモリに関連するその他の要因によって異なります。より詳細な情報はhttp://developer.android.com/guide/topics/fundamentals/processes-and-threads.html – lyricsboy
ありがとうございました – chris