2011-12-10 15 views
2

2つの異なるプロセスで2つのアクティビティを実行しようとしています。これを行う目的は、私のアプリケーションが自分のサブ製品のホームスクリーンアイコンを追加する私の製品を表示していることです。メインプロダクトを使用しているときはいつでも、サブプロダクトを別のプロセスの別のアクティビティで表示するためにメインプロダクトに表示したい。これは、サブプロダクトを終了するときに、バックグラウンドですでに実行されているため、メインプロダクトの再開が高速になるようにするためです。このを通じて読む2つの異なるプロセスで2つのアクティビティを実行する

:プロセス属性: http://developer.android.com/guide/topics/manifest/activity-element.html#proc

は、彼らはあなたがアンドロイドを使用して、異なるプロセスへの活動を分離できると述べています。ここで私が何をやったかです:

<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true" android:process="com.mypackage.myapp"> 
    <activity android:name=".ProductActivity" 
       android:label="@string/app_name" 
       android:configChanges="orientation|keyboardHidden"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
      <category android:name="android.intent.category.DEFAULT"/> 
      <category android:name="android.intent.category.BROWSABLE"/> 
     </intent-filter> 
    </activity> 
    <activity android:name=".SubProductActivity" 
       android:label="@string/app_name" 
       android:configChanges="orientation|keyboardHidden" 
       android:process=":com.mypackage.myapp.newprocname"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
      <category android:name="android.intent.category.DEFAULT"/> 
      <category android:name="android.intent.category.BROWSABLE"/> 
     </intent-filter> 
    </activity> 
    <activity android:name="com.phonegap.DroidGap" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden"> <intent-filter> </intent-filter> </activity> 
</application> 

をしかし、現在のPIDをロギング、両方のactivitesが実際に同じプロセスで実行されている...

何が問題になることができますか?

答えて

3

サブアクティビティの意図をandroid.intent.category.LAUNCHERに設定した後(正しく実行した場合)、2番目のアクティビティに別のTaskAffinity文字列を設定します。 など。マニフェストメイクで第2の活性ラインに必ず

<activity android:name=".SubProductActivity" android:label="SubActivity" 
android:taskAffinity="com.domain.project.SubActivityName"> 

に似た何かを持っているこれは、別のプロセスでSubProductActivityを実行するには、Androidに伝えます。

が、これは答えとしてマークすることができますどのように私は聞いてるのよhttps://stackoverflow.com/a/3270422/978329

+1

も参照してください?私は、taskAffinityがアプリケーションタスク(アクティビティを保持しているもの、または単にバックスタック)に関連していることを意味します。これをtrueに設定すると、コンポーネントを個別のタスクで実行するだけで、別のプロセスでは実行できません。そして、私は、アクティビティのsingleTaskに設定されたlaunchModeプロパティを見ることはできません。 – zgulser

1

私は正しい方法であなたの質問を理解したが、場合、私は知らない...

あなたはMainProductActivityアンドロイドからサブプロダクトアクティビティを起動すると、メモリにMainProductActivityを維持し、次の方法で(SubProductActivityを終了した場合戻るボタンなど)は、アンドロイドがアクティビティを切り替えることができるほど速くなければなりません...あなたが望むものが好きではありませんか?

3

私は2つの異なるプロセスで2つのアクティビティを実行しようとしています。

なぜですか?

これを行う目的は、私のアプリケーションが自分のサブ製品のホームスクリーンアイコンを追加する私の製品を表示していることです。

これは、別々のプロセスにすることとは関係ないようです。

これは、サブプロダクトを終了するときにそのが既にバックグラウンドで実行されているので、私の主な製品を再開すると、高速であることができるようです。

メモリが効率的であることは言うまでもありませんが、それらが1つのプロセスに含まれることはさらに速いでしょう。とにかくあなたの他の活動は記憶に残っています - それを別のプロセスで変えてもそれは変わりません。

何が問題なのですか?

ログに瑕疵がある可能性があります。より簡単なプロセス名(たとえば、:remote)が機能する可能性があります。

しかし、最も簡単な答えは、android:process属性を削除することです。

関連する問題