Android 5.1アプリケーションでタッチ入力(位置と圧力)を収集したいと考えています。これは特定のビューにバインドされたonTouchListener
で可能です。しかし、私はタッチイベントを(バックグラウンドで実行されている)サービス内で収集し、特定のビューに束縛されないようにしたいと考えています。Androidサービスがtouchイベントに耳を傾ける
サービスでタッチイベントを収集することはどういうことですか?
Android 5.1アプリケーションでタッチ入力(位置と圧力)を収集したいと考えています。これは特定のビューにバインドされたonTouchListener
で可能です。しかし、私はタッチイベントを(バックグラウンドで実行されている)サービス内で収集し、特定のビューに束縛されないようにしたいと考えています。Androidサービスがtouchイベントに耳を傾ける
サービスでタッチイベントを収集することはどういうことですか?
基本的には - はい。 View
をサービスに渡して、そこにタッチイベントリスナーを追加することができます。しかし、これにより、深刻なメモリリークの問題に直面することがあります。View
でActivity
をFragment
Context
に渡すためです。おそらく、ServiceConnection
で動作し、onCreate
/onDestroy
(activity
/fragment
ライフサイクル)を管理している可能性があります。
しかし!本当に良いアプローチはActivity
をオーバーライドし、それから他のすべてのアクティビティを継承します。そこでは、メモリリークの可能性が少し低くなります。アクティビティデコレーションビューにonTouchEvent
リスナーを追加して、画面全体でタッチイベントを受け取ることができます。または、すべてのビューの前面に非表示のビューを追加してそこにトラックを追加することもできます(DecorView
バリアントが動作するかどうかはわかりません)。そして、どこにでも触れてください。