Androidゲーム開発採用!GitHub Markstar 1wのAndroidアーキテクトに不可欠なスキル、涙のような仕上げの経験

序文

最近、2つのドラマが爆発しました。30はただ、20は混乱していません。実際、私はこれら2つのテレビドラマを見始めたばかりですが、逆かと思います。29であるべきではありませんか、30は混乱していませんか?後で考えてみると、彼は実際にこの残酷な現実を私たちに伝えたいと思うはずです!20歳のこの時代、私たちは成熟し、世界の残酷さを受け入れなければなりません。混乱する時間を与える時間はありません。世界は常に私たちをこのように成長させます。そして、30は将来への良い願いよりも優れています!30歳のときに、朝食を食べる場所が決まります。これまでの10年間の苦労の痕跡、マニーの道端の屋台、シャオキンの温かい幸せ、グジアの豪華な朝食。
私は東芝、オリエンタルグループ、アリ、サニーヘビーインダストリーで働いてきました。15年のプロジェクト開発経験があります。アセンブリ、Java、c / c ++開発言語に精通しています。基盤となるシステム、Webについて詳細な調査を行っています。開発とモバイル開発。主にアプリケーションレベルのミス、ERPプロジェクト、さまざまな組み込みデバイスソフトウェア(携帯電話、タブレット、スイッチ、多機能機、ドローン、テレビ、スマートホームなど)が含まれます。
最近、このドラマは感情に満ちているので、本当にまた始めましょう、私の人生はまた違うのでしょうか!

メッセージの生成

ユーザーは画面をスワイプして、一連の入力イベント(Downイベント、複数のMoveイベント、およびUpイベント)を生成します。これらのイベントは、システムによって一連のメッセージ(1つのDownメッセージ、複数のMoveメッセージ、および1つ)にパッケージ化されます。アップメッセージ)

メッセージは情報の送信に使用されます。上記のメッセージには、x座標やy座標などのこれらの入力イベントの情報が含まれています。

MessageQueue存放メッセージ

メッセージが生成された後、質問があります。これらのメッセージはどのようにアプリケーションに送信されますか?モーメントをスライドさせたい場合は、WeChatで処理するためにこれらのメッセージをWeChatに送信する必要があります。WeChatはこれらのイベントをモーメントのリストコントロールに送信して、リストが新しいコンテンツを生成し、上下にスライドできるようにします。

最初に頭に浮かぶのは、これらのメッセージをモーメントでリストコントロールに直接送信できるかどうかです(SystemServerはバインダーをリストコントロールに直接送信できます)、はい、しかし面倒です。SystemServerは入力メッセージをリストコントロールに直接送信します。瞬間、次にSystemServerは最初にそのようなコントロールがあることを知っている必要があります。問題は、どのコントロールがアプリケーションにあるか、SystemServerは知らない、すべてのコントロールをトラバースして各コントロールに繰り返しメッセージを送信する必要があるかどうかです。これは明らかに私たちが望んでいることではありません。

SystemServerをコントロールに直接送信することはできないので、アプリケーションに直接送信して、アプリケーションに単独で処理させることはできますか?答えは「はい」です。Androidでも同じことができます。アプリケーションはMessageQueue(メッセージキュー)を準備します。メッセージがある場合は、このMessageQueueに入れて、アプリケーションが自分で処理します。これは美しいですね。 MessageQueueが表示される理由。

ルーパーはメッセージを送信します

アプリケーションがMessageQueueを準備した後、SystemServerは前にパッケージ化された一連の入力メッセージ(一連のメッセージ(ダウンメッセージ、多数の移動メッセージ、およびアップメッセージ))をWeChatメッセージキューに入れ、残りはWeChatに残されます。それ自体MessageQueueの内容を読み取るには、自分でUIを更新します

問題は、MessageQueueがメッセージの保存にのみ使用され、誰かがこのMessageQueueを管理する必要があることです。たとえば、MessageQueueにはいくつかのメッセージがありますが、誰がこれらのメッセージを送信して処理する必要がありますか?

ここでは、ルーパーを紹介します。ルーパーは、このメッセージを送信する相手を決定します。ルーパーは、メッセージキュー内のメッセージの順序に従ってメッセージを1つずつ取り出し、メッセージに付属するメッセージに従って送信します。処理したい-対象)対応者との取引

この例では、これらのメッセージのターゲットはWeChatのメインスレッドのハンドラーです。

ハンドラーはメッセージを処理します

この時、ハンドラーが出てきて、ルーパーが対応する人にメッセージを送って処理したそうです。このがハンドラーです。ハンドラーはメッセージの処理に使用されます。メッセージメカニズムの最後のリンクとして、ハンドラーはメッセージのコンテンツを読み取り、コンテンツに基づいて関連する処理を実行します。

この例では、一連の入力メッセージは最終的にWeChatのメインスレッドハンドラーによって処理されます。複雑なイベント配信およびイベント配布プロセスの後、それらは対応するリストコントロールに渡されます。リストコントロールは、内容に基づいて次のステップを計算します。フレーム内の各アイテムの位置、自身のアイテムとアイテム内のコンテンツを更新することにより、リストのスライド効果を生み出し、友達の輪のスライドプロセスが完了します。

メッセージメカニズムの概要

上記のメッセージメカニズムの場合、上記の見出しに示されているように、以下の図を理解するのが論理的です。

  1. メッセージにはコンテンツが含まれています
  2. MessageQueue存放メッセージ
  3. ルーパーはメッセージを送信します
  4. ハンドラーはメッセージを処理します

総括する

【Android詳細知識ポイントマインドマップ(スキルツリー)】

私は個人的にAndroidの開発を行っています。Androidの開発を10年以上行っています。現在、スタートアップ企業のCTOおよびシステムアーキテクトとして働いています。Androidはこれまでほど熱くはありませんが、4つの主要なコンポーネントで高給の仕事を見つける時代は過ぎ去りました。これは、Androidの中間レベルより下のポジションが飽和状態にあることを示しているだけです。現在、シニアエンジニアはまだ比較的不足しています。多くのシニアポジションは非常に高い給与を支払っています(より多くのお金がある場合、適切なポジションを見つけることができない場合があります)。私はシニアエンジニアになるよう努めています。最も重要です。

ここに添付されているのは、上記のインタビューの質問、JD.com、Xiaomi、Tencent、Toutiao、Ali、Meituan、およびその他の企業からの19年間のインタビューの質問に関連する数十のByteDanceのセットです。技術的なポイントは、知識と多くの詳細を含めて、ビデオとPDFにまとめられています(実際、予想よりも多くの労力を要しました)。

スペースに限りがございますので、ごく一部を写真でお見せいたします。

詳細な配置はGitHubで見ることができます。

Androidアーキテクチャビデオ+ BATインタビュートピックPDF +研究ノート

インターネット上でAndroidを学ぶための資料はたくさんありますが、学んだ知識が構造化されておらず、問題が発生した場合、それを味わい、深く研究しないと、実際の技術的改善を達成することは困難です。 。この体系的な技術システムが方向性の参考になることを願っています。

得られた知識はシステムではなく、問題が発生した場合は、味わって徹底的に勉強するのをやめるだけなので、真の技術向上は難しい。この体系的な技術システムが方向性の参考になることを願っています。

最後に、皆さんに一言、励まし合いたいと思います!

おすすめ

転載: blog.csdn.net/chayel123/article/details/114026510