从指定点退出Android应用程序
问题描述:
首先,让我说,我在这里和其他地方阅读了许多主题,但似乎无法在此找到答案。我意识到“退出”和应用程序是皱眉,但这是我的情况,我该怎么办?从指定点退出Android应用程序
- 首先推出,客户看到的登录屏幕,使用选项记住我登录后
- ,菜单活动被激活
- 我想后退按钮,从菜单中退出程序,不会去回登录活动,该应用程序启动。如果需要返回到登录屏幕,我有一个“注销”菜单选项,否则,我想从菜单活动中退出应用程序。
有没有办法,在我的重写OnBackButtonPressed
,我可以触发应用程序退出?
答
为什么不在你的意图中用标志开始活动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);
}
答
我读过您的所有要求,你只需要操纵应用程序流程就可以实现它了,我希望它对你有所帮助。
在其内部会同时启动应用程序要启动您的登录屏幕,
@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)
其中i
是Intent
的实例。
里面您的清单,
<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>
请让我还是知道,如果你面对任何问题,如果你不理解上面的代码中的任何一点。
如果您的登录屏幕是一个片段,并且该应用程序在同一活动中启动,那么在删除登录片段时,可以不调用'addToBackStack()'。 – anthropomo