Android Studio中,隨時(shí)隨地的退出程序(記得導(dǎo)入相應(yīng)的包,可以設(shè)置自動(dòng)導(dǎo)入所需的包的,下面的代碼還沒有導(dǎo)入包的部分):
成都做網(wǎng)站、網(wǎng)站制作服務(wù)團(tuán)隊(duì)是一支充滿著熱情的團(tuán)隊(duì),執(zhí)著、敏銳、追求更好,是創(chuàng)新互聯(lián)的標(biāo)準(zhǔn)與要求,同時(shí)竭誠(chéng)為客戶提供服務(wù)是我們的理念。創(chuàng)新互聯(lián)公司把每個(gè)網(wǎng)站當(dāng)做一個(gè)產(chǎn)品來開發(fā),精雕細(xì)琢,追求一名工匠心中的細(xì)致,我們更用心!
①新建一個(gè) ActivityCollector 類,作為活動(dòng)管理器,代碼如下所示:
public class ActivityCollector {
public static ListActivity activities = new ArrayList();
public static void addActivity(Activity activity) {
activities.add(activity);
}
public static void removeActivity(Activity activity) {
activities.remove(activity);
}
public static void finishAll() {
for (Activity activity : activities)
{
if(!activity.isFinishing())
{
activity.finish();
}
}
activities.clear();
//以下是殺死當(dāng)前程序進(jìn)程的代碼,保證程序徹底退出。
android.os.Process.killProcess(android.os.Process.myPid());
}
}
②再新建一個(gè)類BaseActivity,并讓所有活動(dòng)繼承這個(gè)類,也就是其他的全部活動(dòng)都改為extends BaseActivity,而不是原來的extends AppCompatActivity。
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("BaseActivity", getClass().getClass().getSimpleName());
ActivityCollector.addActivity(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
ActivityCollector.removeActivity(this);
}
}
③在你想要退出程序的頁面(Activity)的setContentView(R.layout.*****); 下面加上如下代碼,從而實(shí)現(xiàn)點(diǎn)擊一個(gè)按鈕退出整個(gè)程序。
Button button3 = (Button) findViewById(R.id.*****);
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ActivityCollector.finishAll();
}
});
//*號(hào)部分看具體情況而定
若使用的是vivo手機(jī),可以從屏幕底部中間往上滑后停頓調(diào)出后臺(tái)應(yīng)用(部分機(jī)型需點(diǎn)擊左鍵),按住軟件圖標(biāo)上滑,即可關(guān)閉后臺(tái)運(yùn)行的應(yīng)用。
1.后面添加了一個(gè)菜單返回功能鍵,這個(gè)方法也只能用system.exit(0)來關(guān)閉當(dāng)前活動(dòng)的Activity,附代碼:
public boolean onCreateOptionsMenu(Menu menu)
{
super.onCreateOptionsMenu(menu);
MenuItem item = menu.add(Menu.NONE, Menu.NONE, Menu.NONE, "Exit");
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener()
{
public boolean onMenuItemClick(MenuItem item)
{
System.exit(0);
return true;
}
});
return true;
}
2.這樣太不方便,每次退出界面之后應(yīng)用程序還在運(yùn)行,
網(wǎng)上提供了幾種方法,將下面SysApplication這個(gè)類復(fù)制到工程里面,然后在每個(gè)Acitivity的oncreate方法里面通過SysApplication.getInstance().addActivity(this); 添加當(dāng)前Acitivity到ancivitylist里面去,最后在想退出的時(shí)候調(diào)用SysApplication.getInstance().exit();可直接關(guān)閉所有的Acitivity并退出應(yīng)用程序。
附代碼:
import java.util.LinkedList;
import java.util.List;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Application;
import android.content.DialogInterface;
import android.content.Intent;
public class SysApplication extends Application {
private List mList = new LinkedList();
private static SysApplication instance;
private SysApplication() {
}
public synchronized static SysApplication getInstance() {
if (null == instance) {
instance = new SysApplication();
}
return instance;
}
// add Activity
public void addActivity(Activity activity) {
mList.add(activity);
}
public void exit() {
try {
for (Activity activity : mList) {
if (activity != null)
activity.finish();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
System.exit(0);
}
}
public void onLowMemory() {
super.onLowMemory();
System.gc();
}
}
3.在應(yīng)用程序里面 的activity的oncreate里面添加SysApplication.getInstance().addActivity(this)
如:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SysApplication.getInstance().addActivity(this);
}