私は多くの人々は、Androidを見つけるだろうと同意するだろう:プロセスは、アプリケーション・タグの属性として有用であることが。しかし、私はそれがアクティビティタグの属性として有用であることを発見しました。
アクティビティに対するandroid:process
の目的は、アクティビティが特定の名前を持つプロセスで起動されるように指定することです。その名前の選択は、それ自身のプロセス(それを起動したプロセスとは異なる)でアクティビティを分離するため、または同じ名前を使用する他のアクティビティと単一のプロセスで共存するように強制するために使用できます。デベロッパーガイドパー
(http://developer.android.com/guide/topics/manifest/activity-element.html):
「この属性に割り当てられた名前は、コロンで始まる場合( 『:』)、新しいプロセス、アプリケーションにプライベート、それが必要だときに作成されアクティビティは、そのプロセスで実行されます。プロセス名が小文字で始まる場合、活動は。これは、異なるアプリケーションのコンポーネントがリソースを削減、プロセスを共有することを可能にする、それがそうする権限を有していれば、その名前のグローバルプロセスで実行されます使用法。"
この属性は、特定の状況下ではまだ一部のデバイスに適用されている16MBのヒープリミットにかなり近いアプリケーションのヘルプアクティビティを起動したときの問題を解決するのに役立つことが最近判明しました。そのような状況では、ヘルプアクティビティを起動すると、制限を超えてアプリがプッシュされ、強制終了になりました。
android:process
タグを使用することで、私は私の助けの活動は、独自の別のプロセスで起動されるように指定することができました。このプロセスには独自の16MBのヒープがあり、それを起動した私のメインアプリケーションのヒープにはカウントされませんでした。これにより、ヒープスペースがなくなり、ヘルプが起動したときにアプリケーションがクラッシュすることが永久的かつ完全に防止されました。
あなたの起動アプリは、パッケージ名
com.mycompany.mymainapp
を有しているので、あるプロセス名を割り当てられている場合、同じ文字列を、そして、あなたの立ち上げ活動に
android:process=":myhelp"
を使用している場合、それをプロセス名が割り当てられます
com.mycompany.mymainapp:myhelp
このプロセスには独自のセパレータteプロセスID(DDMSなど)を表示できます。
すると、その、少なくとも、私の経験をされています。私のテストでは、これまでCM6(アンドロイド2.2を実行している古いモトドロイド上で実行されています。1)、16MBのヒープリミットを持つように構成されています。私の場合は
、私は、ユーザーが自分のアプリケーションから分離しているように助けを知覚したくなかったので、私は
android:excludeFromRecents="true"
最近のアプリに表示されたヘルプ活動を防止するための属性(長いが含まれて-Press Home)リストを表示します。私はまた、
を含ま
android:taskAffinity="com.mycompany.mymainapp.HelpActivity"
HelpActivityは、私も追加
独自のタスクでの活動を分離するために、ヘルプ活動の名前をある
:
android:launchMode="singleInstance"
このアプリの複数のインスタンスを防ぐためにユーザーがヘルプを呼び出すたびに作成されることを防ぎます。ヘルプ活動を起動するために使用されるテントに
Intent.FLAG_ACTIVITY_NEW_TASK
:
は、私はまた、フラグを追加しました。
これらのパラメータは、android:process
属性を使用している場合に応じて、必要な場合としない場合があります。
Androidデバイス用に開発するときにどれくらいの頻度でメモリ制限に遭遇するかを考慮して、アプリの一部を別のプロセスに分割して独自のヒープを持つことができるテクニック贈り物。私の特定の事例では、私がまだ考慮していない、または経験していない、しかしこれまでのところ、とても良い、これを行う際に隠された危険があるかもしれません。
あなたはプロバイダ名「com.com」に余分なパッケージがあるようです。 – CrackerJack9