0

理由はよくわかりませんが、何らかの奇妙な理由で、アプリケーションだけでなく、systemui 全体の ANR も取得しています。再起動する必要があるのは非常に悪いことであり、再起動後、何かが破損したようにすべてのアプリを「最適化」する必要があります (なぜこれが起こるのかについて誰か説明がありますか?)。

私のコードの一部が非常に悪いため、これを引き起こしていると思いますが、悪意のあるコードでもシステム UI をオーバーロードできるのでしょうか? ともかく...

私がやっていることは、画面記録を処理するサービスを起動しようとしていることです。アクティビティ (フラグメントから) は許可を求め (これは取得され、画面の右上隅に Screencast アイコンが表示されます)、状態の変更を処理するサービスをバインドします。状態の変化とは、これです...

州:

  • Dead - 初期化と準備が必要であることを意味します
  • Alive - 開始する必要があり、完全に初期化/準備されていることを意味します
  • 開始済み - 現在記録中であることを意味します。
  • 一時停止 - 再起動後に新しい動画を開始することを意味し、すべての一時的な動画を 1 つに結合します (詳細はまだわかっていません)。
  • 停止 - すべてのファイルを 1 つに結合し、ブロードキャストのインテントを介して URI を送信することを意味します (まだここまで到達していません)。

Dead -> Alive -> Started <-> Paused -> Stopped -> Dead の順に進みます。少なくともそれが全体的な計画です。サービスを制御するためのリモートとして機能するフローティング ボタンを用意する予定です。そのため、受信機 (ローカル) で、フラグメントが終了するのを待っているフラグメントにブロードキャストします。

さて、私が持っているつもりのものは十分です。私が今持っているものに入りましょう。それは一種の混乱です。私はこれまでにこのようなことをしたことがないので、なぜここで尋ねているのですか. 私は多くのことを試しましたが、残念なことに、新しいソリューションをテストする唯一の方法は、再起動して Android がすべてを最適化するまで 15 分間待つことです。これで、これが「長い」コード セグメントであることがわかりましたが、クラッシュする場所の 1 つは、216 行目の stopRecording() であると言えます。

コードはこちら

変更が必要な場合はお知らせください。

最後に: これを別のスレッドで実行する必要がありますか? それが問題でしょうか?systemui ではなくアプリだけがクラッシュしないのはなぜですか?

4

0 に答える 0