私は Android Things を使用してアプリを作成しています。ほとんどのサンプルでは、アクティビティを使用していても UI を使用していません。Android Things アプリで引き続きバックグラウンド スレッドを使用する必要がありますか?
2 に答える
技術的には、Android Things アプリには UI があります。通常の Android アプリで実行できることはすべて ( setContentView()
、View
やViewGroup
の操作など)、Android Things アプリでも実行できます。ディスプレイに接続されたボードを使用する場合は、この UI をオンに表示できます。ディスプレイ。実際、ディスプレイがこのようなタッチをサポートしている場合は、通常の Android アプリのように UI を操作することもできます。
標準の UI ツールキットを使用するかどうかに関係なく、アプリケーションは他のアプリケーションと同様であり、Android のスレッド ポリシーに準拠する必要があります。たとえば、メイン スレッドでネットワーク操作を実行することはできません。他のアプリと同様に、オペレーティング システムは引き続きアプリのメイン スレッドの応答性を監視します。そのため、周辺機器とのやり取りで長時間実行またはブロック操作が実行される可能性がある場合は、バックグラウンド スレッドを使用して、アプリケーションが応答していないとシステムが認識しないようにする必要があります。
Android Things は、Android アクティビティの入力イベント システムを使用して、ハードウェア周辺機器から入力を受け取ります。つまり、ブレッドボードでボタンが押されると、Activity はこれをキー イベントとして受け取ります。
バックグラウンド スレッドを使用しない場合、アプリがコードの実行でビジー状態になり、これらの入力イベントを解釈および/または受信できない可能性があります。
したがって、これが、オペレーティング システムが標準のスレッド ポリシーを引き続き適用する理由であり、バックグラウンド スレッドを使用する必要がある理由です。
ドキュメントからhttps://developer.android.com/things/sdk/index.html :
ただし、Android Things はディスプレイを必要としません。グラフィック表示が存在しないデバイスでは、アクティビティは引き続き Android Things アプリの主要コンポーネントです。これは、フレームワークがすべての入力イベントを、フォーカスのあるフォアグラウンド アクティビティに配信するためです。アプリは、サービスなどの他のアプリケーション コンポーネントを介してキー イベントまたはモーション イベントを受け取ることはできません。