アンドロイド:アプリケーションを再開しながら、活発な活動を復元
-
05-09-2019 - |
質問
私が実行している2つのアクティビティがあります。ユーザーは、<はem>のmainActivity の中ボタンでクリックするたびに、のchildActivity は起動されます。私は何をしたい、この次のとおりです。
ときアクティブ活動は、のchildActivity の、ユーザーのホームボタンをクリックし、のアプリケーションを再起動し、私はのchildActivity の<見たいです強い>の代わりにののmainActivity の起動されています。
私はいくつかの提案は、実際策を動作していました。私はONSTART、onRestart、onResume、onStop、onDestroyイベントを操作しようとしました。しかし、彼らは問題を完全に解決していません。そこにスマートな方法があるはずです。ありがとうございます。
編集ます:
答え、Soonilいただきありがとうございます。活動は、最近の活動ウィンドウから呼び出されたとき、あなたが言ったケースが起きています。 (ウィンドウが開いたときに長押しのホームボタン)。ただし、あなたは、ホーム画面からそれを開いたときにこれは起きていません。 (開始から開口部のように)私は自分のコードは、このエラーを生成するための特定の問題を抱えているとは思いません。 、ので、私はテストプロジェクトを作成し、質問を送信する前に、スタンドアロンを試してみましたが、同じ問題に直面しました。とにかく、ここではテストコードがあります:
public class MainActivity extends Activity implements OnClickListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.setTitle("MainActivity");
((Button) findViewById(R.id.btnChildActivity)).setOnClickListener(this);
}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
startActivity(new Intent(this, ChildActivity.class));
}
}
public class ChildActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
this.setTitle("ChildActivity");
}
}
解決
編集:今日ややランダムにあなたの問題への解決策を見つけました!このエラーレポートを参照してください。それはまさにあなたの問題を説明します。私は問題を再現することができなかった理由は、私はEclipseが直接アプリを起動必要はありませんです。私は、アプリをインストールし、それを自分自身を起動するためにEclipseを使用します。
<時間>このはすでにAndroidアプリケーションのデフォルトの動作で、特別なトリックは、これを達成するために必要とされていません。私はあなたのアプリケーションがこの動作を実証していない驚いています。すべてのAndroidアプリケーションは、アクティビティスタック、活動の文字通りLIFOスタックを維持します。これらの活動は、さらに、タスクにグループ化することができますが、平凡なアプリケーションの99%がこれまでの私の経験のタスクについて何を知っている必要はありません。
あなたはホームボタンを押すと、、アプリケーション全体のスタックが背景に入れています。背景にしながら、それは、任意の時点でメモリ上の懸念のために殺されるかもしれないが、それが復元される前に経過していない多くの時間ならば、それは一般的に殺されていませんし、再作成する必要はありません。あなたがもう一度アプリケーションを選択すると、スタック(またはより正確に、スタック上の唯一の最上位項目)が復元されます。
アプリケーションは、この挙動を示すされていない場合は、、私はそれはあなたがmainActivityとchildActivityを起動し、使用することができる余分なテントのフラグされている方法とは何かを持っている疑いがあります。万が一あなたがmainActivityを開始しているどのようにコードスニペットを投稿することができchildActivity?
他のヒント
私は戻って、同様のアプリケーションでテスト、およびプロセスは、メモリの外に強制された場合でもSoonilが言うようにChildActivityは自動的に再構成されています。あなたがエミュレータ上または実際のデバイス上でこれを見ていますか?
アプリを実行し、logcatを見れば、あなたのアプリを起動した後、あなたは次のようなものが表示されるはずです、そしてChildActivityを開き、[ホーム]をクリックし、再度あなたのアクティビティを起動します:
開始アクティビティ意図{アクション= android.intent.action.MAINカテゴリ= {android.intent.categroy.LAUNCHER}フラグ= ... COMP = {com.yourpackagename.MainActivity}} 活性yourpackagename.ChildActivityためPROCを開始:PID = xでUID = YのGIDの= {} 表示されたアクティビティ/.ChildActivity
あなたが期待する動作が表示されないときは、logcatの出力をポストてもらえますか?