2015-09-24 107 views
0

我的MainActivity声明了以下HOME,DEFAULT类别和MAIN Action。我也选择应用程序作为默认启动器。当我点击后按下它按预期关闭MainActivity。但是如果我离开MainActivity运行并重新启动设备,我无法离开MainActivity!按下我调用finish()的onBackPress(),按预期暂停活动。但后来我看到onCreate调用(),onResume()和MainActivity像小丑一样备份!我可以做什么?这只发生在活动仍在运行时重启设备之后。重启后无法关闭Android应用程序

我做的一切,我可以摆脱这个活动里面包括

onBackPressed(){ 
    ActivityCompat.finishAffinity(MainActivity.this); 
     finish(); 
} 

我已经看到开始活动摆在首位建议,FLAG_ACTIVITY_CLEAR_TOP但其操作系统,而不是我。

我不能离开应用程序!

+0

退房:http://stackoverflow.com/questions/2280361/app-always-starts-fresh-from-root-activity-instead-of-resuming-背景状态 –

回答

1

将此代码添加到onBackPressed()方法中。

Intent intentExit = new Intent(Intent.ACTION_MAIN); 
intentExit.addCategory(Intent.CATEGORY_HOME); 
intentExit.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intentExit); 
finish(); 
0

这只是一个想法,不知道是否会工作完全

尝试创建一个广播接收器

  1. 获取手机重启的情况下
  2. 关闭应用程序

在的Manifest.xml

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 


<receiver android:name=".BootCompleteReceiver"> 
      <intent-filter>  
       <action android:name="android.intent.action.BOOT_COMPLETED"/> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
</receiver> 

BootCompleteReceiver.java

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent;  

public class BootCompleteReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
      Intent i = new Intent(context, MainActivity.class); 
      i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      i.addFlags (Intent.FLAG_ACTIVITY_SINGLE_TOP); 
      i.putExtra("close_activity",true); 
      context.startActivity(i); 
    } 
} 

MainActivity.java添加此块

@Override 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 
    if(intent.getBooleanExtra("close_activity",false)){ 
     this.finish(); 
    } 
} 

参考文献:

  1. Android BroadcastReceiver, auto run service after reboot of device
  2. Close application from broadcast receiver
相关问题