1

私のアプリでは、システム カメラを呼び出して写真を撮り、その結果を onActivityResult で処理します。以前は機能していましたが、今では呼び出しアクティビティが時々殺されたり、うまく機能したりすることがあります。全体像が必要なので、これがなければintent.putExtra(MediaStore.EXTRA_OUTPUT, output)(インテント データを使用してビットマップを取得するなど) 使用する必要があります。写真を撮って「OK」ボタンをクリックした後、カメラを起動するアクティビティに戻る必要がありますが、正常に動作することもあれば、親アクティビティが終了することもあります。検索後、設定android:alwaysRetainTaskState="true"しましたが、うまくいきません。私のシステムはGalaxy S I9000です。これを他の電話でもテストしましたが、うまくいきました。誰かが理由を知っていましたか?ここに私のコードがあります

  private void startTakePhoto(){
    App.fileNameWithPath = Environment.getExternalStorageDirectory().getAbsolutePath()+ File.separator + System.currentTimeMillis()+".jpg";
    File file = new File(App.fileNameWithPath);
    Uri output = Uri.fromFile(file);
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, output);
    boolean flag = BaseUtil.hasImageCaptureBug();
    System.out.println(flag);
    //intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(fileNameWithPath)));
    //BaseUtil.saveImagePath(App.fileNameWithPath, this);
    startActivityForResult(intent, REQUEST_TAKE_PHOTO);
}
このように:
私が欲しいのは
1. A スタート B (スタック: A,B)
2. B カメラ アクティビティを開始し、結果を待ちます (スタック:A、B、カメラ)
3. 画像を保存し、B アクティビティを返す (スタック: A,B)

ただし、ステップ 3 では、B ではなく A に戻ります。
システムで B が終了しているように見えますが、なぜですか?
4

1 に答える 1

1

http://developer.android.com/reference/android/app/Activity.html 理由は Android のメモリ管理です。私が知っているように、あなたの携帯電話には約 100MB の空きメモリがあり、アクティビティがフォアグラウンドにない場合は破壊される可能性があります。そのため、アクティビティを開始するには、onPause、onDestroy、および on Resume メソッドのいくつかのメソッドを実装する必要があります。すべての情報を Bundle に保存し、Activity を適切に開始するだけです。

于 2013-09-18T10:04:21.417 に答える