レッスン4Androidでのマルチプロセス

マルチプログレス

最初のケース:2つのアプリケーション間では、プロセスとプロセス間の関係でもあります。このセクションではあまり説明しません。

2番目のケース:1つのアプリケーションで複数のプロセスを開きます。

マルチプロセスモードを開く

開く方法:android:process属性をAndroidMenifestの4つの主要コンポーネント(Activity、Service、Receiver、ContentProvider)に割り当てます。

例:

SecondActivityプロセス名:com.syy.note:remote

ThirdActivityプロセス名:com.syy.note.remote

<activity
    android:name="com.syy.note.MainActivity"
    android:configChanges="orientation|screenSize"
    android:label="@string/app_name"
    android:launchMode="standard"
    <intent-filter>  
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
/>

<activity
    android:name="com.syy.note.SecondActivity"
    android:configChanges="orientation|screenSize"
    android:label="@string/app_name"
    android:process=":remote"
/>

<activity
    android:name="com.syy.note.ThirdActivity"
    android:configChanges="orientation|screenSize"
    android:label="@string/app_name"
    android:process="com.syy.note.remote"
/>

ps:プロセスリストの表示コマンド:adb shell ps

マルチプロセスモードの操作メカニズム

  • 静的メンバーおよびシングルトンモードは完全に無効です。たとえば、静的変数がクラスで定義されている場合、プロセスが変数の値を変更した場合、別のプロセスが静的変数の値を取得した場合、取得された値は引き続き初期値。
  • スレッド同期メカニズムは完全に無効です。異なるプロセスが同じメモリを使用しておらず、異なるプロセスが同じオブジェクトをロックするため、ロックオブジェクトもロックグローバルクラスもスレッド同期を保証できません。
  • SharedPreferencesの信頼性が低下します。spの最下層はXMLファイルの読み取り/書き込みによって実現され、同時書き込みは問題を引き起こします
  • アプリケーションは複数回作成されます。異なるプロセスが別々の仮想マシンを割り当てます。これは、別々のアプリケーションを開始するのと同じです。したがって、新しいアプリケーションも作成されます。

 

 

 

 

 

おすすめ

転載: blog.csdn.net/wishxiaozhu/article/details/114646320