2

私は、ユーザーが写真を作成してそれを使って作業できるアプリを書いています。

IMAGE_CAPTUREインテントを使用してカメラを起動し、そこに写真を保存するためのパスを提供します。

この写真は一時的なもので、アプリの終了時に削除したいと思います。

写真を表示してユーザーが操作できるようにするアクティビティがあります。写真を削除する最善の方法は、onDestroyメソッドを使用することだと思いました。

私が抱えている問題は、ユーザーがデバイスの向きを変更すると、アクティビティが破棄されて新しいアクティビティに置き換えられることですが、ユーザーが後で必要になるように向きを変更したからといって、ファイルを削除できません。

では、これらのファイルを削除したままにするために何ができますか?

onAppExitなど、すべての一時ファイルを削除できる上書きできる他の方法はありますか?

前もって感謝します

4

4 に答える 4

2

最善の方法は、アクティビティのオーバーライドされた onBackPressed() メソッドで削除することだと思います。ご覧のとおり、バック プレス イベントは、ユーザーがこのアクティビティ インスタンスとの対話を終了し、新しいアクティビティ インスタンスに戻ることを意味する唯一の終了ポイントです。

于 2012-09-21T11:11:09.597 に答える
2

SD カードのキャッシュ ディレクトリを取得するには、常にgetExtExternalCacheDir() API を使用します。このパスにすべての一時ファイルを作成します。このキャッシュはアプリのアンインストール後に破棄されます

ローカル ストレージのキャッシュ dir パスにgetCacheDir()を使用することをお勧めします。デバイスのメモリが不足すると、このメモリは自動的にクリアされます。

キャッシュを手動でクリアする方法を説明する投稿は次のとおりです:アプリのキャッシュ フォルダーを削除するには?

于 2012-09-21T11:12:51.170 に答える
1

したがって、グローバルブール回転を宣言し、これを使用します:

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {      
    super.onRestoreInstanceState(savedInstanceState);
    rotation=false;
}
@Override
protected void onSaveInstanceState(Bundle outState) {
    // TODO Auto-generated method stub
    rotation = true;
    super.onSaveInstanceState(outState);
}

その後onDestroy()使用中

if(!rotation){
//delete here
}
于 2012-09-21T11:15:23.833 に答える