首页源码android退出应用(Android退出应用程序方法总结[通俗易懂])

android退出应用(Android退出应用程序方法总结[通俗易懂])

编程之家2024-06-10279次浏览

一、Android 应用退出的几种方法

android退出运用,主要有3种常用方案。

android退出应用(Android退出应用程序方法总结[通俗易懂])

分别是:

杀进程,暴力退出app。

系统退出,强制性退出。

activity管理(栈),合理性退出。

【主要原理】

主要是通过通知系统杀死运用,或者移除所有的界面资源达到退出运用的目的。

android退出应用(Android退出应用程序方法总结[通俗易懂])

【详细实现】

杀进程,暴力退出app。

优缺点:暴力,但是容易丢失数据,可能会引起不必要的问题。

代码如下:

android.os.Process.killProcess(android.os.Process.myPid());

系统退出,强制性退出。

android退出应用(Android退出应用程序方法总结[通俗易懂])

优缺点:相对第一种方法温和点,谨慎使用。

代码如下:

System.exit(0);

activity管理(栈),合理性退出。

优缺点:推荐使用,一个个移除apk打开的所有资源,达到退出apk的目的。

代码如下:

public class ScreenManager{

private static Stack<Activity> activityStack;

private static ScreenManager instance;

private ScreenManager(){

}

public static ScreenManager getScreenManager(){

if(instance==null){

instance=new ScreenManager();

}

return instance;

}

//退出栈顶Activity

public void popActivity(Activity activity){

if(activity!=null){

activity.finish();

activityStack.remove(activity);

activity=null;

}

}

//获得当前栈顶Activity

public Activity currentActivity(){

Activity activity=activityStack.lastElement();

return activity;

}

//将当前Activity推入栈中

public void pushActivity(Activity activity){

if(activityStack==null){

activityStack=new Stack<Activity>();

}

activityStack.add(activity);

}

//退出栈中所有Activity

public void popAllActivityExceptOne(Class cls){

while(true){

Activity activity=currentActivity();

if(activity==null){

break;

}

if(activity.getClass().equals(cls)){

break;

}

popActivity(activity);

}

}

}

【最后】

推荐使用第三种方案,方便管理退出。

二、Android 怎么退出整个应用程序

1.后面添加了一个菜单返回功能键,这个方法也只能用system.exit(0)来关闭当前活动的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.这样太不方便,每次退出界面之后应用程序还在运行,

网上提供了几种方法,将下面SysApplication这个类复制到工程里面,然后在每个Acitivity的oncreate方法里面通过SysApplication.getInstance().addActivity(this);添加当前Acitivity到ancivitylist里面去,最后在想退出的时候调用SysApplication.getInstance().exit();可直接关闭所有的Acitivity并退出应用程序。

附代码:

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.在应用程序里面的activity的oncreate里面添加SysApplication.getInstance().addActivity(this)

如:

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

SysApplication.getInstance().addActivity(this);

}

三、Android 怎么退出整个应用程式

Android怎么退出整个应用程式

在Android中,Activity有个栈,一个Activity结束掉,会回到上一个Activity,并不是退出应用程式。

Android中,退出应用程式的方式:

通过pid

int pid= android.os.Process.myPid();获取当前应用程式的PID

android.os.Process.killProcess(pid);杀死当前程序

这种方法退出应用,是会保留某些后进程,例如:Service,Notifications等。

2.通过ActivityManager

ActivityManager manager=(ActivityManager)context.getSystemService(ACTIVITY_SERVICE);获取应用程式管理器

manager.killBackgroundProcesses(getPackageName());强制结束当前应用程式

这种方式退出应用,会结束本应用程式的一切活动,因为本方法会根据应用程式的包名杀死所有程序包括Activity,Service,Notifications等。

呼叫System.exit(0);

其实还有一种方法也不错,把MainActivity设定为singleTop,先跳转到MainActivity然后finish就行,不过要注意停掉相应的Service

大家都知道 Android的 Activity是存著历史栈的,比如从 A-> B-> C,C完成 finish后回到 B,把所有的Activity都 finish了,程式就自然退出了。当然在 finish的同时也需要是否自己程式的其他资源。所以需要想个办法把 Activity给存起来。然后在程式退出的地方呼叫它们的 finish()方法。

使用全域性变数。对了,第一个想到的就是继承 Application,程式码入下。

public class AgentApplication extends Application{ private List<Activity> activities= new ArrayList<Activity>(); public void addActivity(Activity activity){activities.add(activity);}@Overridepublic void onTerminate(){super.onTerminate();for(Activity activity: activities){activity.finish();}onDestroy();System.exit(0);}}

然后在 Activity onCreate的时候来呼叫 addActivity(),有人可能想到这个Application需要在所有的 Activity onCreate的时候都使用,需要做一个单例例项。其实根本不需要。在 Activity中使用 this.getApplication()就可以了。

最后在你需要推出程式的地方呼叫 application.onTerminate()就可以了。记住:super.onTerminate()必须呼叫,程式码中的 onDestroy()是我自己的释放其他资源的方法,不是系统的。

执行以上程式码后,在LogCat中会出现一行提示:

Process包名(pid xxxxx) has died.证明你的程式退出了。现在你可以测试了。

有几种方法,一种是:程式退出时,下方有写在按一次退出程式

第二种,进设定-应用程式-正在执行这一栏自己关

有时跳转的activity较多时,还需要多次按返回键,这样感觉一点都不爽。后面添加了一个选单返回功能键,这个方法也只能用system.exit(0)来关闭当前活动的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;}想到这样太不方便了,每次退出介面之后应用程式还在执行,今天查了下资料终于把这个问题给解决了,网上提供了几种方法,我吸收了下面这个自认为简单易懂的方法,将下面SysApplication这个类复制到工程里面,然后在每个Acitivity的oncreate方法里面通过SysApplication.getInstance().addActivity(this);添加当前Acitivity到ancivitylist里面去,最后在想退出的时候呼叫SysApplication.getInstance().exit();可直接关闭所有的Acitivity并退出应用程式。附程式码: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();}}在应用程式里面的activity的oncreate里面新增SysApplication.getInstance().addActivity(this)如:public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);

你可以长按主屏键后,在其中关闭应用程式。但并不能完全退出执行记忆体

ipod shuffle6(ipodshuffle6是蓝牙耳机吗)iphone尺寸(iphone12尺寸大小)