ユーザーが提供する正規表現が巨大な html コード データの照合に使用される AsyncTask を実装しました。ただし、一部の正規表現には多くの量指定子/バックトラッキングが含まれているため、Matcher.find() は無限になります。
ここで提供されているInterruptibleCharSequenceを使用しようとしました: How to terminate Matcher.find() when its running too long? 、しかし、charAtが呼び出されることはないようですので、中断されることはありません。私の最後の推測は、この通常のマッチング手順を実行するためだけに新しいプロセスを作成し、検索がキャンセルされたときにそれを強制終了することです。ただし、プロセスが異なるため、サービスとアクティビティの間でオブジェクトを共有する際に問題が発生します。