从指定点退出Android应用程序

问题描述:

首先,让我说,我在这里和其他地方阅读了许多主题,但似乎无法在此找到答案。我意识到“退出”和应用程序是皱眉,但这是我的情况,我该怎么办?从指定点退出Android应用程序

  • 首先推出,客户看到的登录屏幕,使用选项记住我登录后
  • ,菜单活动被激活
  • 我想后退按钮,从菜单中退出程序,不会去回登录活动,该应用程序启动。如果需要返回到登录屏幕,我有一个“注销”菜单选项,否则,我想从菜单活动中退出应用程序。

有没有办法,在我的重写OnBackButtonPressed,我可以触发应用程序退出?

+0

如果您的登录屏幕是一个片段,并且该应用程序在同一活动中启动,那么在删除登录片段时,可以不调用'addToBackStack()'。 – anthropomo

为什么不在你的意图中用标志开始活动C?我不认为你需要覆盖OnBackButtonPressed。过于复杂的一个相当简单的解决方案。

例如:

Intent showActivity = new Intent(Sender.this, Receiver.class); 
showActivity.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(showActivity); 

这样,当用户按下后退按钮时,他会退出应用程序,而不是回到登录屏幕

如果您仍然需要覆盖后退按钮,那就试试这个例如:这段代码在这里

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     Intent a = new Intent(this,A.class); 
    a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(a); 
    return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 

道具bitestarhttps://*.com/a/9398171/450534

我读过您的所有要求,你只需要操纵应用程序流程就可以实现它了,我希望它对你有所帮助。

在其内部会同时启动应用程序要启动您的登录屏幕,

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.login); 
    UTILS.Log_e(TAG, "onCreate"); 




     initialize(); 

    //check for configuration 
//here you need to check,whether user has been logged in already or not 
    if(!CONSTANTS.isConfigured) 
    { 
//display login dialog if user has not been logged in already 

     displayLoginDialog(); 
    } 
    else 
    { 

//move to Home screen if user has already logged in 
     i.setClass(mContext, HomeActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(i); 
     finish(); 
    } 

} 

内,您的主页屏幕,

@Override 
public void onBackPressed() { 
    exitApp(); 
} 

private void exitApp() 
{ 
    i.setClass(mContext, ExitActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(i); 
    finish(); 
} 


//call logout function as per your requirement 

    private void logout() 
{ 
    i.setClass(mContext, LoginActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(i); 
    finish(); 

} 

里面你ExitActivity,

public class ExitActivity extends Activity{ 

    private static final String TAG = "ExitActivity"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     moveTaskToBack(true); 
     finish(); 
     } 

} 

注意: 在上面的代码中,我已经使用i.setClass(context,destination_class_name)其中iIntent的实例。

里面您的清单,

 <activity 
     android:name=".ui.LoginActivity" 
     android:label="@string/app_name" 
     android:windowSoftInputMode="stateHidden|adjustPan"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

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

请让我还是知道,如果你面对任何问题,如果你不理解上面的代码中的任何一点。