关闭应用程序并在启动器上打开

时间:2017-08-16 10:19:57

标签: android

我正在学习开发android,我需要你的帮助。 这就是我用来关闭我的应用程序......

if($mergeId['merge_id']) {
     $rows[] = $mergeId['merge_id'];
}

问题是,当我返回我的应用程序时,它会在最后一次活动中打开,我将在LAUNCHER活动中打开它。

编辑:原因是:我有一项活动,用户可以从帐户退出登录活动中的命运。注销后,当用户打开我的应用程序时,他必须在他不登录时一次又一次地转到登录活动。

2 个答案:

答案 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的方式。

现在让我们为您的方案工作,如果我从您的问题中做出正确的假设,那么您想要的是:

  1. 当用户点击两次&#39;在Android中的后退按钮上,您想要关闭该应用。
  2. 关闭应用后,当用户通过

    返回您的应用时
    • 从主屏幕点击应用启动器,或

    • 来自最近

  3. <强>解决方案: 使用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();
    

    以上通话会终止您的应用,当您从上述任一选项开始时,它将从启动器开始。 :)

相关问题