2017-04-07 136 views
0

我正在开发一款应用程序,当用户按下关闭按钮时,我需要关闭这个应用程序,当初始活动启动时,我设法使用finish()从另一个叫来,而不是开始。但是,当我尝试再次打开该应用程序时,它会自动关闭。Android应用程序正常关闭但不会再次打开

LoginActivity(应用程序在关闭按钮的位置):

public static final String closeKey = "closeKey"; 
//I cut off the entire onCreate function to show only the close app code 
     cancel.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i = getBaseContext().getPackageManager() 
        .getLaunchIntentForPackage(getBaseContext().getPackageName()); 
      i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      i.putExtra(closeKey,"closeApp"); 
      startActivity(i); 
      finish(); 
     } 
    }); 

正如你可以看到我做什么是我的意图增派元素系列,这将表明,我希望我的首发活动该应用程序关闭。

LoadingActivity(精简应用程序):

 Bundle extras = getIntent().getExtras(); 

    if(extras == null){ 
     executeAnim(); 
    }else{ 
     android.os.Process.killProcess(android.os.Process.myPid()); 
     System.exit(0); 
     finish(); 
    } 

的LoadingActivity检查是否有对意向任何额外消费,如果没有它会触发加载动画,并转到LoadingActivity,如果有一个额外的元素它会关闭这个活动,因为它表明你想关闭它。

+0

您是否尝试过在那里坚持一个'Log.d'看什么'临时演员结束了?在if(extras == null)上设置一个断点可以让你看到那个变量的内容。我敢打赌,这是你的问题所在。 – nukeforum

+0

活动仍然存在,当您再次启动应用程序时会重新创建活动,该活动会检查附加活动,看到“关闭”并再次致命 –

+0

我开始工作了,必须添加一些验证,但现在工作正常。 – alexUne

回答

0

我找到了一种方法,使工作,有几个验证添加到的if/else在LoadingActivity:

Bundle extras = getIntent().getExtras(); 

    if(extras == null){ 
     executeAnim(); 
    }else if (extras.getString(LoginActivity.closeKey) == null){ 
     executeAnim(); 
    }else if (extras.getString(LoginActivity.closeKey) == ""){ 
     executeAnim(); 
    }else { 
     try{ 
      android.os.Process.killProcess(android.os.Process.myPid()); 
      System.exit(0); 
      finish(); 
     }catch (Exception ex){ 
      ex.printStackTrace(); 
     } 
    } 
相关问题