1

Androidの起動時にイーサネット経由でadbを有効にする簡単なアプリを作成しています。キャンセルボタンを使用して、ネットワーク上のadbの有効化を防ぎます。スーパーユーザーのポップアップが表示されたら、すぐにクリックすれば問題ありませんが、数秒待ってから [OK] をクリックすると、表示が更新されません。

onCreate は mHandler を使用してランナブルを開始します。これはカウントダウン タイマーに使用されます。mHandler.postDelayed を使用して起動プロセスを遅らせようとすると、表示が更新されません。mHandler.postAtFrontOfQueue を使用すると、カウントダウン表示は正常に機能しますが、スーパーユーザー ダイアログに従って画面が更新されません。

カウントダウン タイマーは、mHandler.postAtTime を使用してランナブルを繰り返し呼び出します。フォーカスをリセットするには、ランナブルの先頭に何かを配置する必要があると考えていますが、まだアンドロイドに慣れていないため、何が幸せになるかを理解することができません。

アプリケーションを手動で実行すると、すべてが正しくなります。2 番目のアンドロイドでは、すべてが正しいです。

4

1 に答える 1

0

「android.intent.action.boot_completed」の使用から「android.intent.action.MEDIA_MOUNTED」の使用に変更することで、問題の回避策を見つけました。

私が観察したのは、フル ブートが完了する前に boot_completed が発生したことです。正確には何なのかわからない何かが、すべてを踏みにじった。タイマーを使用してランナブルをスリープまたは起動しようとしたときに、スリープまたはタイマーが問題が発生した時間を超えた場合、ランナブルに入ることなく、スリープとタイマーが戻ることはありませんでした。media_mounted に切り替えることで、踏んでいたものはすでに通過しました。

スタートアップ アプリを使用して SD から init.rc ファイルを実行することを考えていたので、メディア マウントをトリガーすることは、その必要性にとって理にかなっています。

于 2013-08-03T06:57:11.080 に答える