我正在学习开发android,我需要你的帮助。 这就是我用来关闭我的应用程序......
if($mergeId['merge_id']) {
$rows[] = $mergeId['merge_id'];
}
问题是,当我返回我的应用程序时,它会在最后一次活动中打开,我将在LAUNCHER活动中打开它。
编辑:原因是:我有一项活动,用户可以从帐户退出登录活动中的命运。注销后,当用户打开我的应用程序时,他必须在他不登录时一次又一次地转到登录活动。
答案 0 :(得分:2)
强烈建议永远不要调用System.exit(0);
,如果你的应用程序需要被杀死,你应该让Android处理。
尝试这样的事情,它会让你控制背压之间的延迟,并且非常易读。
// Time in millis between presses.
private final static int BACK_EXIT_DELAY = 2000;
private long backLastPress = 0;
@Override
public void onBackPressed() {
long now = System.currentTimeMillis();
if( now - backLastPress < BACK_EXIT_DELAY ) {
finish();
} else {
Toast.makeToast( this, "Press back again to exit.", Toast.LENGTH_SHORT).show();
backLastPress = now;
}
}
答案 1 :(得分:1)
您需要了解Activity, Tasks and Back stack works in Android的方式。
现在让我们为您的方案工作,如果我从您的问题中做出正确的假设,那么您想要的是:
关闭应用后,当用户通过
返回您的应用时从主屏幕点击应用启动器,或
来自最近
<强>解决方案:强> 使用CLEAR_TASK和NEW_TASK标志创建一个意图,并将目标活动作为启动器活动。
<强> TransparentActivity.java 强>
public class TransparentActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int flag = (getIntent().getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
if (Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY == flag) {
PackageManager pm = getPackageManager();
Intent intent = pm.getLaunchIntentForPackage(getPackageName());
getApplication().startActivity(intent);
}
finish();
}
}
<强> ApplicationUtils.java 强>
public static void kill(Context context) {
Intent intent = new Intent(context, TransparentActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NO_HISTORY);
context.startActivity(intent);
}
只需拨打以下行即可退出您的应用:
ApplicationUtils.kill();
以上通话会终止您的应用,当您从上述任一选项开始时,它将从启动器开始。 :)