2017-12-22 8 views
0

アクセシビリティサービスを持つアプリケーションを開発中です。このサービスでは、ウィンドウマネージャの画面を上に表示してバックエンド機能(ボタンをクリックして他の画面に移動)を行います。このウィンドウマネージャ画面では、アニメーションを追加する必要があります(最悪の場合、単純なプログレスバーを追加する必要があります)。私の問題は、私はウィンドウマネージャにWindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY(以下ロリポップとするために)ORWindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY(上記のマシュマロとするために)プロパティを追加した場合、私が正常に終了機能をバック完了していますが、アニメーションがぶら下がっている、アクセシビリティサービスで「WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY」プロパティを持つWindowManagerアニメーション

1)です。これは、単純なプログレスバーでも発生しています。

2) WindowManager.LayoutParams.TYPE_PHONEをウィンドウマネージャに追加すると、アニメーションは正常に表示されますが、バックエンド機能は動作しません。

ご迷惑をおかけいたします。前もって感謝します。

+0

私は答えていませんが、あなたを示唆しています。 GitHubのオープンソースからスクリーンロックプロジェクトの助けを借りて、同じ目標を達成することができます。代わりに、ウィンドウマネージャー – Shubham

+0

「アクセシビリティサービス」でアクティビティ利用サービス、シングルトン、インフレートビューを使用する代わりに、これらのプロジェクトは彼を助けません。アクセシビリティサービスには特別な制限があります。 – ChrisCM

答えて

0

ビューを追加するアクセシビリティサービスの難しさは、正しいアクセス権を得ています。アプローチ1のあなたのアプローチは正しいです。このようなアニメーションのパフォーマンスの問題は、関連しない問題になります。ビューがウィンドウマネージャに正常に追加されると、ビューのパフォーマンスに対する懸念は、アクティビティのコンテキストにあるかのような懸念に似ています。そうでないと、メモリリークやビューリークなどが発生しない限り、オーバーレイビューをウィンドウマネージャに直接追加すると、管理者自身がそれらのビューを削除する必要があるため、管理が難しくなります。それ以外の場合、古いインスタンスのオーバーレイは永遠に残ってしまい、パフォーマンスが低下します。

サービスの観点からオプション1を付けて、この決定の範囲外のパフォーマンスの問題を把握してください。それらは間接的にしか関連していません。あなたのパフォーマンスの問題は、この決定によって直接引き起こされるのではなく、むしろ他の場所で間違います。これらは私が投機的な答えしか提供できないものです。

関連する問題