2011-08-02 6 views
0

私はメインスクリーンとしてタブスクリーンを備えた小さなAndroidアプリケーションを持っています。私のアプリケーションは、ユーザーが最後に行ったアクティビティに現在フォーカスしていないという小さな問題があります。Android - アクティビティの動作?

これはシナリオです:

  1. ユーザーがアプリケーション
  2. アプリケーションがユーザーが
  3. ユーザーが自宅の鍵
  4. ユーザーを介してアプリケーションを離れるログイン情報を入力し、タブの画面に行く
  5. ログイン画面を示し起動アプリケーションアイコンを押してアプリケーションに戻り、再度ログイン画面が表示されます

この場合、最後に表示されたアクティビティに戻すようにします。

メイン/ランチャーActvitiyとしてログイン画面を起動し、正しい資格情報が入力されると、タブ画面のアクティビティを起動してログインアクティビティを終了します。

これを達成するために使用する必要がある起動モードなどがありますか?

EDIT:詳細情報のタブ画面は、単純に次のように起動される

Intent intentTabActivity = new Intent(getApplicationContext(), TabScreenActivity.class); 
startActivity(intentTabActivity); 

ホームボタンを介してアプリケーションを残します。

ログイン状態を維持し、ログインをバイパスする予定ですが、作成した小さなアプリケーションでは、最後に表示されたアクティビティに自動的に戻り、最初のランチャー画面に戻ることはありません。このアプリケーションでは同じ動作です。

また、私の他の質問によると、HEREの動作は、デバッグと署名付きリリースでは異なるようです。

これは、常に実際のデバイスでテストされています。

+2

詳細情報が必要です。どのくらい正確にタブ画面を起動していますか?彼らは戻るボタンまたはホームボタンを離れていますか?なぜあなたはログイン状態を維持しておらず、ログインしていればログイン画面をバイパスしていませんか? – Paddy

+0

あなたはこれをどこで確認しましたか?デバイスまたはエミュレータで..? – ngesh

+0

あなたの質問に対する回答は上記の私の編集を参照してください。 –

答えて

3

これは正しい動作です。本質的に何が起こるかは、アクティビティがバックグラウンドになると直ちにAndroid DVMの慈悲である。 DVMにスペースが必要だと感じたら、基本的にはアプリケーションを終了させるでしょう。アイコンからアプリケーションを起動しようとすると、実際には最初から再起動します。

しかし、問題を解決するには、ログイン画面に「自動ログイン」または「パスワードを記憶」のようなチェックボックスを表示し、ユーザーがアプリを開くたびにチェックすると自動的にログインして次の画面。この動作は、何らかの永続的ストレージを使用して実装する必要があります。

+0

DVMはいつでもアプリケーションを終了させる可能性があることを認識していますが、それは直ちに殺されるべきではない、または少なくとも私の他のアプリケーションでの経験です。しかし、これはメインタブに戻るだけで、ユーザーが開いていた最後のものではないので、私が望む動作ではありません。デバッグリリースでは、私のアプリケーションは必要に応じて動作し、最後に表示されたアクティビティに戻りますが、署名付きリリースでは常にログインアクティビティが開きます。 –

+0

それは実際にはその時点でデバイスとそのメモリリソースに依存します。したがって、あなたのデバイスが実質的にゼロの実行中のアプリケーション/サービスで全く新しいデバイスであれば、アプリケーションは無傷で取得されます。もう1つの要素は、アプリケーションの取得にかかった時間です。 – PravinCG

+0

その分、アプリケーションアイコンを押すと、LoginActivityでレジュームが呼び出されるので、アプリケーションが再起動されていないのに、最後に開いた画面の代わりにログイン画面が表示されてしまうということを想定しています。 –

1

あなたのonPause()を使用しているため、タブが通過したときにタブが何らかのアクションを実行する可能性があります。 最終的にホームキーを押すと、この問題につながる可能性のあるonPause()が呼び出されます。おそらく、この場合はonPause()を確認する必要があります。

+0

私はonPause()メソッドからすべてのコードをチェックして削除しましたが、動作は改善されていません。 –

1

on homeボタンのみonStopが呼び出されました。あなたはonStopでアクティビティの終了をしていますか?そうでなければ、スタックの一番上にあるアクティビティが保持されます。

+0

いいえ、私はアプリケーションのどこにでもonStop()を実装しません。 –

+1

タブ画面のonDestroy()をオーバーライドし、いくつかのログを入力して、押しているアクティビティが破棄されているかどうかを確認します。 – Naresh

+0

これはonPause()を最初に実行しなければならないでしょうか? –

関連する問題