首页编程android退出应用?Android 应用退出的几种方法

android退出应用?Android 应用退出的几种方法

编程之家2023-11-05263次浏览

朋友们,你是否曾想过深入了解android退出应用和Android 应用退出的几种方法的内涵?在本文中,我将为你详细解析这两个话题,希望能给你带来全新的视角和思考。

android退出应用?Android 应用退出的几种方法

Android 怎么退出整个应用程序

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

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

通过pid

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

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

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

android退出应用?Android 应用退出的几种方法

2.通过ActivityManager

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

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

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

Android 怎么退出整个应用程式

Android怎么退出整个应用程式

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

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

android退出应用?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);

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

Android 应用退出的几种方法

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

分别是:

杀进程,暴力退出app。

系统退出,强制性退出。

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

【主要原理】

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

【详细实现】

杀进程,暴力退出app。

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

代码如下:

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

系统退出,强制性退出。

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

代码如下:

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);

}

}

}

【最后】

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

好了,文章到此结束,希望可以帮助到大家。

成都小程序开发公司,成都做小程序开发公司哪家好漂亮网页,寻找漂亮网页效果的代码