この質問は、私の質問に対する回答がないことから生じました: android start activity from background thread
この問題に対する私の取り組みから、バックグラウンド スレッドがユーザー入力に対して startActivityForResult を実行し、結果を取得する方法はないと思います (たとえば、onActivityResult による)。既知の手段または回避策に関するアドバイス(またはそれが機能するAndroidバージョン、私は4xで試しました)では不可能であることを確認してください。以下に調査したオプションの詳細:
私の主なアクティビティは、timertask を介してバックグラウンド スレッドを開始し、後で他のアプリを開始するユーザーによってバックグラウンドに移動されます。次に、バックグラウンドの timertask スレッドが次のように試行します。
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//takePictureIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
//takePictureIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
//startActivity(takePictureIntent);
}
コードが上記のようにsetFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
コメントされている場合、カメラはメイン アクティビティ スタック レベルのバックグラウンドで起動します。がコメント解除されている場合setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
、カメラはフォアグラウンドで開始されますが、メイン アクティビティでは、カメラが写真を撮るのを待たずonActivityResult
に呼び出した直後に呼び出されます。startActivityForResult