4

写真を撮るというメディア インテントを起動しています。ユーザーが写真を撮り、前のアクティビティに戻ると、アプリケーション全体が再起動されます。

これは常に発生するわけではないため、デバイスのメモリが少ないと、アプリケーションがバックグラウンドになり、Android がそれを強制終了すると思います。

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

ありがとう!

4

5 に答える 5

12

これは Android の通常の動作です。現在画面に表示されていないすべてのアクティビティ ( の後) は、システムのメモリが少ない場合、onStop予告なしに (つまり) 強制終了される可能性があります。onDestory

これは通常、アプリに関係なくメモリの問題があるテスト デバイスの 1 つのアプリで発生します。

通常、インテントを介してカメラを開いてデバイスを回転させると (縦から横に)、この動作を再現できます。これにより、アプリも強制終了され、再作成されます。

これを解決するには、パラメーターを拡張onSaveInstanceStateして使用し、強制終了されたインスタンスから新しいインスタンスに重要な情報を渡す必要があります (「カメラから写真を取得している最中です」など)。savedInstanceStateonCreate

于 2012-04-22T08:05:35.170 に答える
2

2つの可能性が考えられます...

  1. アクティビティを強制終了するわけではありませんが、インテントによって新しいアクティビティが開始されます。次のように、アクティビティ タグの属性として manifest.xml にタグを配置することで、これを停止できます。

    <アクティビティ android:name=".nameOfActivity"
    android:launchMode="singleTop" />

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

于 2012-04-19T20:18:44.057 に答える
1

IMO 2 つのオプション:

  1. onSaveInstanceState/onRestoreInstanceState を実装するか、
  2. あなたの活動をサービスにしましょう。
于 2012-04-23T21:59:42.597 に答える
1

私はこの問題に直面し、研究開発後に解決策を得ました。ターゲット Android 4.0 を設定し、アクティビティの AndroidManifest.xml に次の行を追加します。

android:configChanges="screenLayout|uiMode|orientation|screenSize|smallestScreenSize"

わたしにはできる。

于 2013-01-02T14:07:41.047 に答える
0

メディア インテントを開始するときは、startActivity(intent) の代わりに次のメソッドを使用します

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

開始されたアクティビティが終了すると、呼び出しアクティビティが開始されます。次の関数を使用してこれを処理する必要があります

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

開始されたアクティビティは、次のメソッドをオーバーライドする必要があります

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

startActivityForResult() は、特定のタスクのアクティビティを開始し、目的の結果を取得するための特別な方法です。呼び出されたアクティビティはデータを送り返します。

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

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

于 2012-04-23T12:27:15.607 に答える