2012-04-16 12 views
3

写真を撮るメディアの意向を開始しています。ユーザーが写真を撮って前のアクティビティに戻ると、アプリケーション全体が再開しました。AndroidインテルはMedia Intentを起動するとアプリケーションを停止します

これはいつも起こるわけではないので、私のアプリケーションはバックグラウンドになり、アンドロイドはデバイスのメモリが不足しているときにそれを殺すと思います。

私のアプリケーションがバックグラウンドにならないようにする方法はありますか?

ありがとう!私は2つの可能性を考えることができ

+0

アプリケーションをバックグラウンドにするのを止めることはできませんが、おそらく状態を保存して復元することができます。 – zapl

+0

写真を撮りたい場合は、アプリをバックグラウンドに移動する必要があります。 – Ronnie

+0

カメラの起動に使用するコードを表示してください。 – Ronnie

答えて

10

これは、Androidの通常動作で、(onStop後)の画面上で現在表示されていないすべての活動(すなわちonDestory)システムが低メモリを有する場合に予告なしに死滅させることができます。

これは通常、私たちのアプリケーションに関係なくメモリの問題を抱えている私たちのテストデバイスの私たちのアプリケーションに起こります。

通常はです。意図してカメラを開いてから、デバイスを回転させると(ポートレートからランドスケープに)、これによってアプリが強制終了され、再作成されます。

は、「我々はカメラから写真を得ることの真ん中にいる」のように(自分の新しいインスタンスにご殺したインスタンスからいくつかの重要な情報を渡すためにあなたが onSaveInstanceStateを拡張し、あなたの onCreatesavedInstanceStateパラメータを使用する必要があり、これを解決するために、 )。

+0

それは私が望んでいた答えではありませんが、アプリケーションの状態を保存しようとすると私の問題を処理する唯一の方法だと思っています。ありがとう! – timoschloesser

+0

あなたはPhonegapを使用しているアプリのソリューションを持っていますか? –

2

...

  1. それは活動を殺していないが、その意図は、新しいアクティビティを起動します。あなたはこのような活動タグの属性としてあなたのmanifest.xmlにタグを置くことによって、これを停止することができます。

    <活動 アンドロイド:名=「nameOfActivity」
    アンドロイド:launchMode = 『singleTop』/>

  2. メディアインテントがメイン/ランチャーアクティビティではなく、写真を処理するアクティビティの下にあることを確認します。

0

あなたの代わりにstartActivityの方法以下のメディアの意図使用を開始する(意思)

startActivityForResult(intent, REQUEST_CODE); //private int REQUEST_CODE = 232 

始めた活動が終了すると、あなたの呼び出し元の活動が開始されます。あなたは、特定のタスクのための活動を開始するための特別な方法であり、所望の結果を得る)活動がfollwoing方法

@Override 
    public void onBackPressed() { 
     Intent intent = new Intent(); 
     setResult(REQUEST_CODE, intent); 
     super.onBackPressed(); 
    } 

startActivityForResult(オーバーライドする必要が始めたこの使用して、次の機能

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { 
     //Perform your task  
     } 
} 

を処理する必要があります。呼び出されたアクティビティはデータを戻します。

2つのアクティビティ間でデータを送受信するために、putExtra()メソッド& getExtraを使用できます。

これでうまくいけば問題は解決します。 疑問がある場合はコメントしてください。可能であれば、あなたのコードを共有して、より明確にすることができます。

1

IMO二つのオプション:

  1. サービスあなたの活動を行いますonSaveInstanceState/onRestoreInstanceState または
  2. を実装します。
0

私はこの問題に直面し、解決策を得ました.R & Dです。それは私の作品

configChanges = "smallestScreenSize screenLayout | uiMode |オリエンテーション| |画面サイズ": ターゲットの設定のAndroid 4.0、その後の活動のAndroidManifest.xmlをして次の行を追加します。

アンドロイド。

関連する問題