我使用以下HOME,DEFAULT类别和MAIN Action声明了MainActivity。我也选择将应用程序作为默认启动器。当我点击后退时,按预期关闭MainActivity。但是,如果我让MainActivity运行并重新启动设备,我就无法摆脱MainActivity!按onBackPress(),我调用finish(),按预期暂停活动。但后来我看到onCreate调用了(),onResume()和MainActivity就像一个小丑!我可以做什么?这仅在活动停止运行后重启设备后才会发生。
我正在尽我所能摆脱这项活动,包括内部
onBackPressed(){
ActivityCompat.finishAffinity(MainActivity.this);
finish();
}
我已经看到了对FLAG_ACTIVITY_CLEAR_TOP的建议,但它是首先启动Activity的操作系统,而不是我。
我根本不能离开应用程序!
答案 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)
这只是一个想法,不知道它是否能完美运作
尝试创建广播接收器
在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();
}
}
参考文献: