重启后无法关闭Android应用

时间:2015-09-24 05:05:53

标签: android

我使用以下HOME,DEFAULT类别和MAIN Action声明了MainActivity。我也选择将应用程序作为默认启动器。当我点击后退时,按预期关闭MainActivity。但是,如果我让MainActivity运行并重新启动设备,我就无法摆脱MainActivity!按onBackPress(),我调用finish(),按预期暂停活动。但后来我看到onCreate调用了(),onResume()和MainActivity就像一个小丑!我可以做什么?这仅在活动停止运行后重启设备后才会发生。

我正在尽我所能摆脱这项活动,包括内部

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

我已经看到了对FLAG_ACTIVITY_CLEAR_TOP的建议,但它是首先启动Activity的操作系统,而不是我。

我根本不能离开应用程序!

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

  

这只是一个想法,不知道它是否能完美运作

尝试创建广播接收器

  1. 获取手机重启事件
  2. 关闭应用
  3. 在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