質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

3462閲覧

アプリがバックグラウンドにある状態でのstartActivityでゾンビ化する

gon5on

総合スコア7

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2016/05/17 08:31

Androidアプリで質問です。
スプラッシュ画面でサーバと通信をし、レスポンスが返ってきたら
メイン画面に遷移しようとしています。

AsyncTaskを使って実装しておりますが、
通信中にアプリをバックグラウンドに追いやると、
端末上はアプリの画面が表示されていないにもかかわらず、
急にゾンビのようにメイン画面が表示されます。

onPostExecuteでisFinishing判定を入れているので、
バックキーで終了された場合はゾンビにならないのですが、
バックグラウンドにしただけだとstartActivityが動いてしまうのか、ゾンビ化します。

解決方法をお教え頂けますでしょうか。

念のため、下記アクテビティのonPostExeute抜粋になります。

java

1@Override 2protected void onPostExecute(Integer tag) { 3 if (isFinishing()) { 4 return; 5 } 6 7 Intent intent = new Intent(this, MainActivity.class); 8 startActivity(intent); 9}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

バックグラウンドに入っただけではfinishは呼ばれないのでisFinishingはfalseを返します。
そのため、フラグを1つ追加し、onPauseとonResumeでフラグの上げ下げをするのが簡単そうですね。

また、ゾンビとは殺しても死なない状態の事を指すので、今回の状態を適切に表していないかなぁと感じました。

投稿2016/05/17 08:40

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gon5on

2016/05/17 08:58

回答いただきありがとうございます。 何かメソッドでもあるのかぁと思っていましたが、その辺りは自分で持たせて制御する必要があるのですね。 ゾンビという表現が適切ではないとのこと、失礼しました。 よみがえってくるイメージでゾンビという単語を使っていました。 フラグを追加して対応したいと思います、 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問