从指定点退出Android应用程序

时间:2013-02-01 02:29:09

标签: c# android mono back-button

好的,首先,让我说,我在这里和其他地方读过很多帖子,但似乎无法在这里找到答案。我意识到“退出”和应用程序是不受欢迎的,但这是我的场景,我该怎么办?

  • 首次启动,客户看到登录屏幕,并选择记住我
  • 登录后
  • ,激活菜单活动
  • 我希望后退按钮从菜单中退出应用程序,而不是返回应用程序启动的登录活动。如果他们需要返回登录屏幕,我有一个菜单选项“退出”,否则我想从菜单活动中退出应用程序。

在我覆盖OnBackButtonPressed时,有没有办法可以触发应用退出?

2 个答案:

答案 0 :(得分:0)

为什么不在Intent中使用标志启动活动?我认为你不需要覆盖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://stackoverflow.com/a/9398171/450534

答案 1 :(得分:0)

我已阅读了您的所有要求,您需要操纵应用程序流程,如下所示,以实现它。我希望它对您有所帮助。

在启动应用程序时将启动的登录屏幕内

    @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>

如果您遇到任何问题或者您不理解上述代码中的任何一点,请告诉我。