我们在开发当中经常要实现一个退出整个程序的功能,实现这样功能的方法有很多,今天我们就来利用activity中的singletask启动模式来优雅的退出整个程序吧!
首先我们需要了解的是关于singletask的一些知识,这个启动模式是栈内复用,举个简单的例子,如果有四个页面1,2,3,4,我们依次跳转,当从4跳转到2的时候,那么3和4就会被销毁,当然,如果从4跳转到1的话,那1之前的所有activity都将被销毁,此时我们再将1给finish掉就可以了,我们就是利用这样一个原理来实现退出整个程序。
另外大家也要知道,当1使用了singletask的启动模式的时候,我们再次启动该activity的时候,该activity不会再次被创建,但是会调用一个onNewIntent方法,我们的finish就要写在这个方法里面,下面我们看具体实现
第一步 设置退出按钮 设置intent 跳转到首次启动的activity 并且将此activity的启动模式设置成singletask
quit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intentto = new Intent(Main3Activity.this,MainActivity.class); startActivity(intentto); } });
<activity android:name=".MainActivity" android:launchMode="singleTask"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
第二步 在首次启动的activity中重写onNewIntent方法 然后在里面写上finish方法
@Override protected void onNewIntent(Intent intent) { finish(); }如此就可以实现优雅的退出整个程序了