2017-03-26 15 views
0

私はバックグラウンドで実行される可能性のあるアプリを持っています。それが実行されている間、それは正面に特定の活動をもたらすかもしれません。しかし、アプリが前面に動いているときに、アプリがバックグラウンドで現在実行されている場合、私はAndroidがアプリを前面に持ってくることを望んでいません。その理由は、私のアプリが顧客が現時点でやっていることを中断させたくないからです。アプリがバックグラウンドで実行されている場合、前面にアプリを持ち込まずにAndroidのアクティビティを前面に持ち込む方法を教えてください。

以下は、アクティビティを起動するコードです。

Intent intentLogin = new Intent(getApplicationContext(), LoginActivity.class); 
intentLogin.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intentLogin); 

上記のコードの問題は、それが呼び出されるたびに、常に前に私のアプリを持ってしてもアプリはつまり、私の顧客を悩ます、バックグラウンドで実行されています。

私の質問は、私が静かに活動を前面に持ち込むことができる方法はありますか?私のアプリが正面を走っているなら、それは素晴らしいことです---顧客はすぐに新しいアクティビティを見ます。私のアプリがバックグラウンドで実行されている場合は、アプリがバックグラウンドで実行されているときに静かにアクティビティを前面に表示し、次に顧客がアプリを再開すると、先に進んだ新しいアクティビティが表示されます。

どうすればいいですか?

ありがとうございました!

+0

あなたはMainActivityの別のアクティビティonResume()を見たいと思っていますか? –

+0

必ずしもMainActivityというわけではありません。問題は、現アカウントがログアウトしたことを通知する通知を顧客に発行することです。そして、顧客が戻ってくると、最後に残したページの代わりにログインページが表示されます。顧客が自分のアプリを正面から使用している場合は、通知が入るとログインページが表示されます。アプリがバックグラウンドで実行されている場合、次回はアプリを再開するときにログインページが表示されます。 –

+0

あなたはonPauseまたはonDestroyを強制的にログアウトしますか? –

答えて

1

如果我没理解错的话:

  • アプリケーションの背景と通常のプレーヤー。
  • ユーザーがログアウトすると、ローカルに保存されているユーザーデータを消去し、通知を表示できます。通知がクリックされたら、LoginActivityを開始します。

  • アプリの背景と珍しいプレーヤー。

ときに通知が示すように、ユーザーがそれをクリックする代わりにapp.YouがLoginActivityを開始し、ない.IF BaseActivityonResume()することにより、既存のかどうか、ユーザーのデータを確認することができます実行しないでください。

  • アプリケーションフォアグラウンド。

ユーザーデータをクリアして起動するようにします。LoginActivity

あなたは(私が思う最高のユーザーexperence)上記溶液を好きではない場合は、この試してみてください。intent.Butをすることを忘れないでください非表示にするmoveTaskToBack(true)を使用して、特定の活動にonCreate()

  • をアプリがバックグラウンドかフォアグラウンドかを確認してください。thisを参照してください。 ユーザーがアプリを残して、ユーザーがアプリに戻ってくるときには、メインとし、NODISPLAYをテーマにした別のアクティビティを定義する代わりに.MainActivity の別のアクティビティを表示したい:
+0

ログインやログアウトは忘れてしまった。私が探しているのは、アプリがバックグラウンドで実行されている場合、フォアグラウンドにアプリケーションを持ってこないで、静かに特定のアクティビティをフロントにもたらすことができるソリューションです。 –

0

正しく理解していれば、私はこれを示唆しています。

<activity 
android:name=".MainActivity" 
android:theme="@android:style/Theme.NoDisplay"> 
<intent-filter> 
<action android:name="android.intent.action.MAIN"/> 

<category android:name="android.intent.category.LAUNCHER"/> 
</intent-filter> 
</activity> 

通常の活動を定義します。 MainActivityクラスでは、static variableを定義します。例えば

public static boolean appRun = false; 

ためのonCreate()のSecondActivityは真にその値を変更

class SecondActivity extends Activity{ 
@Override 
protected void onCreate(Bundle Saved){ 
super.onCreate(Saved); 
MainActivity.appRun = true; 
} 
} 

とonPause MainActivityから開始するSecondActivityと力を再開しない避けるためにthis.finish();を設定します。 MainActivityのonCreate()またはonResume()は値をチェックし、別のアクティビティに移動します。

if(appRun == true){ 
    /*it means user went to SecondActivity and you want to display another*/ 
    startActivity(new Intent(context, NewActivity.class)); 
    } 
else{ 
//this is first time so navigate to SecondActivity 
} 

また、フラグメンテーションを使用することができれば、この解決策も有効です。

+0

ご返信ありがとうございます。あなたの理解は部分的に正しいです。はい、ユーザーが自分のアプリに戻ったときに別のアクティビティを表示したいのですが、MainActivityからのアクティビティではありません。これは、ユーザーが前回自分のアプリをバックグラウンドにプッシュしたときに残したアクティビティです。 –

+0

次に、各アクティビティのthis.finish()onPause()を呼び出します。 –

+0

ありがとうございます。 iOSアプリのようなAndroidの「デリゲート」のようなものはありますか? –

関連する問題