プロセスに関するAndroidの知識は、あなたが知っている必要があります(A)

プロセスの概念を理解します

プロセスは、それ自身の専用のメモリリソースと、リソース割当及びスケジューリングシステムの基本単位プログラムを実行しています。

プロセスは、電話で.;など、PCやモバイル最後の面であるので、PC側のプロセス、オペレーティングシステムの概念であり、このような音楽プレーヤーなどのプログラムのパフォーマンス、ソフトウェアをチャット、アプリケーションソフトウェアです。

プロセスとスレッドの違い

マップを見てください

上の写真から、我々は、見ることができますスレッドを含むプロセスをあなたがそのような関係の複数のスレッドを持つことができますプロセス。

各プロセスは、デフォルトでは、オペレーティング・システムによって割り当てられた彼の記憶、プロセスおよび他のプロセスが共有できないメモリ領域の一部を持っています。ただ、デフォルトの状況を記述する単語を使用。データといえばプロセス間で共有することができない、これは絶対的ではありません。また、共有することができる特殊なケースでは、これは、IPCメカニズムです。つまり、プロセス間通信、プロセス間通信:IPCメカニズムの完全な名前が呼ばれていますIPCメカニズムについては、現在、我々はこの記事が詳細にフォローアップするIPC Androidのシステムについての記事を書くための特別な機構をIPCメカニズムを議論していない、などの知っています。

スレッドは、プロセスがメモリを共有することができない、プロセスを好きではない、とのスレッドができます。スレッドは、プロセスに含まれています。メモリは、それから対応するプロセス上のスレッドによって割り当てられています。そのため、スレッド、共有メモリ、および同時実行シナリオに適した他の特性を簡単に作成でき、多くの場合と呼ばれるそのの軽量のプロセスデータはスレッド間で共有することができますので、それほど頻繁に並行性の問題を結果として不注意があるだろう並行プログラミングにオープンし、問題が発生したデータの複数のスレッド間で同期されません。これは、に注意を払う必要があり、マルチスレッドの開発です。

設定プロセス

Androidのシステムでは、デフォルトでは、APPは、単一の開発プロセスです。一般的には、複数のプロセス上のビジネスニーズは、かなり十分なので、単一のプロセスは比較的小さいです。あなたが複数のプロセスが必要な場合は、その後、アンドロイドは、マルチプロセスを実装するための方法を提供します。Androidのマニフェストファイルの方法は、4つのコンポーネントアンドロイド用に設定されているプロセス:アンドロイド属性。デフォルトでは、すべてが同じプロセスで実行されている、アプリケーションパッケージ名のデフォルトのプロセス名。

例えば:

<activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity android:name=".SecondActivity"
            android:process=":second"
            >
        </activity>
        
        <activity android:name=".ThirdActivity"
            android:process="com.example.rainyang.demo.third"
            />
复制代码

MainActivityは、デフォルトのプロセスで実行され、プロセスは、アプリケーションのパッケージ名を呼ばれる:com.example.rainyang.demo。

名前のSecondActivityプロセスの実行:com.example.rainyang.demo:第二は、:パッケージ名と現在のプロセス名の前に示すために簡略化したものです。

名前のプロセスThirdActivityラン:com.example.rainyang.demo.third。

上記に引用活性の例は、プロセスが同じ属性、同じ効果サービス、のContentProvider、放送媒体を使用して、同様に四つの成分のうちの1つによって表されます。

プロセスは、複数のプロセス(アプリ)を実行し、システムがメモリを使い果たしたとき、ああ、携帯電話のメモリは、とても大きいです、あなたは思い、また部門の優先課題である、プロセスが実行する方法を、現在使用中のメモリを必要?ユーザーがそれを使用することはできませんので、必ず、メモリに持っています。システムは、そのメモリが再利用され、最も低い優先度のプロセスを強制終了するためのプロセスの優先順位に従って選択され、次いで、ユーザが現在対話しているプロセスに割り当てられたメモリを置きます。したがって、ユーザの通常の使用を確保します。

次は、プロセスの分類を参照してください。

プロセスカテゴリ

分類の方法は、標準としてのプロセスの優先度レベルに基づいており、それが分類されました。導入されたさまざまなプロセスから優先順位の次の降順。

フォアグラウンドプロセス(フォアグラウンド・プロセス)

フォアグラウンドプロセスは、操作プロセスが現在実行されているため、プロセスと対話しているユーザーが必要であることです。以下の条件のいずれかを満たし、プロセスは、それらのすべては、フォアグラウンドのプロセスに属しています。

  • ユーザは、コンポーネントとアクティビティを相互作用され、onResumeコールバックの活動が実行されています。プロセス・アクティビティ・コンポーネントは、フォアグラウンドプロセスに属します。
  • onReceived BroadcastReceiver成分()メソッドが実行されています。プロセスでは、フォアグラウンドプロセスです。
  • onCreateサービスサービス()メソッド、ONSTART()メソッド、onDestroy()は、これら三つの方法、実行中のメソッドがある場合。現時点では、それはフォアグラウンドプロセスのプロセスに属しています。

フォアグラウンド・プロセスが最優先され、一般的に言えば、システムはそのメモリを取り戻す、それを殺すことはありません。あなたは、ああ、フォアグラウンドプロセスは、突然回復システムを使用しているユーザを操作する過程で、ユーザーエクスペリエンスが大幅に悪化していること、だと思います。フォアグラウンドプロセスのためには、フォアグラウンドプロセスがメモリを必要とするため、正式に、システムがそれを満たすために、他のプロセス、メモリの回復を殺すために行くだろう、一般的にそのサービスのためのプロセスシステムです。

上記を満たすいくつかの条件を通じ、フォアグラウンドプロセスは見つけることができ、これらの例は、4つのAndroidのコンポーネントが関連しています。それがプロパティで設定されたプロセスの4つの主要なコンポーネントで、前にマルチプロセスをセットアップするために来るときの方法を見てください。これらはエコーです。ある程度までは、APPの四つの成分の代わりに、と理解及び処理を実現することができます。

可視プロセス(可視プロセス)

-可視プロセスは、その優先順位は、フォアグラウンドプロセスの優先度よりも低いが、その説明から単語が、ユーザーに興味の何かをやっている「顧客ケア」は見ることができ、それが簡単にそれを殺す、あるいは心理的な肯定のユーザーことができません不快。次のいずれかの条件が満たされる場合には、プロセス内の可視プロセスを表します。

  • 表示ではなく、活動フォアグラウンドとユーザの相互作用に(活動onPauseコールバックでは、と呼ばれている)、どのようにそれを理解するには?あなたは、状況を考え、現時点でのアクティビティが表示されますが、現在のユーザの注意が相互作用点ポップで、ポップ活動の上に表示されます。
  • フロントデスクを開く、startForegroundサービスを呼び出すことによって()メソッド。
  • サービスは、ダイナミック壁紙、入力サービスとして、ユーザの注意の特定の機能のためのホストシステムです。

このプロセスは、優先順位を殺すのは簡単ではない、一般的に、比較的高いです。

サービスプロセス(サービスプロセス)

サービスコンポーネントは、サービスプロセスなどのプロセスに属しているサービスを有効にするSTARTSERVICE()メソッドを呼び出すとき。サービスプロセスがフォアグラウンド・プロセスとしてではありませんが、プロセスは、アップロードと論理的な背景のネットワーク・サービス・プロセス内のデータをダウンロードするよう、多くの場合、ユーザーが気に物事のいくつかのように直接表示されるユーザーに見られますが、することができます。だから、メモリが十分ではありません、一般的に十分なメモリの場合には、サービスプロセスを殺すために行っていない場合を除きます。

長時間実行されているサービスの(例えば30分以上)は、そのプロセスは以下のキャッシュLRUリストをドロップできるようにするためにダウングレードすることができます。これは、多くのRAMを果たし、システムが効果的にキャッシュ処理を使用することはできません原因長期的にはメモリリークやその他の問題を回避するのに役立ちます。

キャッシュされたプロセス(プロセスキャッシュ)

キャッシュプロセスは、他の場所のメモリを必要なときに、システムがプロセスを殺すために優先権を与える最低のプロセスの優先度です。(かわいそうに...)、このようなプロセスの殺害は、ユーザーエクスペリエンスに影響を与えません。

一般に、システムは、アプリケーション間の切り替えを目的とした複数のキャッシュ処理を切り替え、より効果的な役割(キャッシュまあ、スペアタイヤの両方視覚)を再生し、システムに応じて定期的な清掃最も古いキャッシュを必要としていますプロセス。システムのすべてのプロセスを再利用メモリキャッシュを殺された後、メモリは、必要性を満たしていないが、サービスプロセスを開始することを選択します。

概要

プロセスの理解のいくつかのタイプの顔には、開発者はニーズに応じて、右のプロセス内のロジックは、殺されるサービスで、その結果、優先度の低いプロセスに重要なビジネス・ロジックを避けるためにすることができ、ユーザーエクスペリエンスではありませんまた、このような状況。

IPC

IPC(プロセス間通信)プロセス間通信の間に、言及した資料の冒頭があります。作用のメカニズムは、複数のプロセス間の通信のニーズを満たすことです。Androidシステムは、通信のマルチプロセスモードはそうでバインダー、AIDL(また、内部バインダー)、ソケットのContentProviderとを有しています。達成するためのIPCメカニズムについて、今後の記事で詳しく説明します。


書き込みは容易ではない、私はかなり良い感じ、「のポイントであると同様に次の小節を奨励するために」!



ます。https://juejin.im/post/5cfcfe98e51d4550bf1ae82fで再現

おすすめ

転載: blog.csdn.net/weixin_33966095/article/details/91466777