2017-03-26 2 views
0

백그라운드에서 실행할 수있는 앱이 있습니다. 실행 중일 때 특정 활동이 전면에 나타날 수 있습니다. 그러나 앱이 활동을 전면에 가져올 때 앱이 현재 백그라운드에서 실행 중이면 안드로이드가 앱 자체를 전면에 가져 오지 않고 그냥 백그라운드에서 실행하기를 원하지 않습니다. 그 이유는 내 앱이 고객이 지금하고있는 일을 방해하지 않기 위해서입니다.백그라운드에서 실행중인 경우 앱을 전면에 가져 오지 않고 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을 시작할 수 있습니다.

  • 앱 배경 특이한 선수.

알림이 표시, 사용자가이를 클릭 대신 BaseActivityonResume()에 의해 기존의 여부를 .If, LoginActivity을 시작하지 여부를 app.You은 사용자 데이터를 확인하실 수 있습니다 실행되지 않습니다.

  • 앱 전경.

강제 사용자 데이터와 강제 시작 LoginActivity. 당신이 (내가 생각하는 최고의 사용자의 experence) 위의 솔루션을 좋아하지 않는 경우에

,이 시도 : 특정 활동에 onCreate()에서

  • 의 intent.But가 기억 숨길 moveTaskToBack(true)를 사용 앱이 배경 또는 전경을 실행하는지 확인하십시오. 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에 '위임자'와 같은 것이 있습니까? –