问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

android activity怎么全部退出

发布网友 发布时间:2022-04-30 18:15

我来回答

3个回答

热心网友 时间:2022-06-28 23:40

做过Android开发的人都知道,应用程序点击返回键 或者 代码显示调用了Activity.finish()方法都无法完全退出,通过任务管理工具可以看到他们还在进程中。
下面我将分享 OSChina.NET Android版客户端 完全退出程序的方法:
1. 添加权限
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
2. 导入AppManager工具类
AppManager类是一个自定义的工具类,作用是将应用程序所有启动的Activity都添加到堆栈,最终退出应用程序时全部释放掉Activity。
完整的AppManager类代码:
[java]
package net.oschina.app;

import java.util.Stack;

import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;

/**
* 应用程序Activity管理类
* @author liux
*/
public class AppManager {

private static Stack<Activity> activityStack;
private static AppManager instance;

private AppManager(){}
/**
* 单一实例
*/
public static AppManager getAppManager(){
if(instance==null){
instance=new AppManager();
}
return instance;
}
/**
* 添加Activity到堆栈
*/
public void addActivity(Activity activity){
if(activityStack==null){
activityStack=new Stack<Activity>();
}
activityStack.add(activity);
}
/**
* 获取当前Activity(堆栈中最后一个压入的)
*/
public Activity currentActivity(){
Activity activity=activityStack.lastElement();
return activity;
}
/**
* 结束当前Activity(堆栈中最后一个压入的)
*/
public void finishActivity(){
Activity activity=activityStack.lastElement();
if(activity!=null){
activity.finish();
activity=null;
}
}
/**
* 结束指定的Activity
*/
public void finishActivity(Activity activity){
if(activity!=null){
activityStack.remove(activity);
activity.finish();
activity=null;
}
}
/**
* 结束指定类名的Activity
*/
public void finishActivity(Class<?> cls){
for (Activity activity : activityStack) {
if(activity.getClass().equals(cls) ){
finishActivity(activity);
}
}
}
/**
* 结束所有Activity
*/
public void finishAllActivity(){
for (int i = 0, size = activityStack.size(); i < size; i++){
if (null != activityStack.get(i)){
activityStack.get(i).finish();
}
}
activityStack.clear();
}
/**
* 退出应用程序
*/
public void AppExit(Context context) {
try {
finishAllActivity();
ActivityManager activityMgr= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
activityMgr.restartPackage(context.getPackageName());
System.exit(0);
} catch (Exception e) { }
}
}
3. 使用AppManager工具类
Activity启动时,在的onCreate方法里面,将该Activity实例添加到AppManager的堆栈
AppManager.getAppManager().addActivity(this);
需要退出程序时,调用
AppManager.getAppManager().AppExit(this);

热心网友 时间:2022-06-28 23:41

我们在项目开发的时候可能会遇到安全退出应用的场景,如何能够安全退出多个Activity?网上有很多方法,下面这种方法就是我最喜欢的,简单又易懂。如下:每打开一个Activity,就记录下来,在需要退出时,关闭每一个Activity即可。使用单例模式创建一个Activity管理对象,该对象中有一个Activity容器。定义一个Application类来存储Activity对象的引用。代码如下:
public class ExitAppliation extends Application
{
private List activityList = new LinkedList();
private static ExitAppliation instance;
private ExitAppliation()
{
}
// 单例模式中获取唯一的MyApplication实例
public static ExitAppliation getInstance()
{
if (null == instance)
{
instance = new ExitAppliation();
}
return instance;
}
//添加Activity到容器中
public void addActivity(Activity activity)
{
activityList.add(activity);
}
// 遍历所有Activity并finish
public void exit()
{
for (Activity activity : activityList)
{
activity.finish();
}

System.exit(0);
}
}</activity></activity>
注:Application类是为了那些需要保存全局变量设计的基本类,你可以在AndroidManifest.xml的标签中进行自己的实现,这样的结果是:当你的application或者包被建立的时候将引起那个类被建立。就是说application是用来保存全局变量的,并且是在package创建的时候就跟着存在了。所以当我们需要创建全局变量的时候,不需 要再像j2se那样需要创建public权限的static变量,而直接在application中去实现。只需要调用Context的getApplicationContext或者Activity的getApplication方法来获得一个application对象,再做出相应 的处理。
然后在每个Activity的onCreate()方法中添加下面代码:
ExitAppliation.getInstance().addActivity(this);
在需要结束所有Activity的时候调用exit方法:
ExitAppliation.getInstance().exit();

热心网友 时间:2022-06-28 23:41

另一种简单粗暴的干法:
Process.killProcess(Process.myPid());
直接杀掉当前进程。 ^_^
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
imba里能抽到什么好装备 DOTA IMBA神器抽奖抽到几率和大野爆的几率。还有小鸡无限眼的BUG能不能... 《魔兽世界》怀旧服玩具获取方法 求最好的手机杀毒软件 手机杀毒软件哪个好用 2023年最旺女孩名字有草有水296个 我的世界红石电梯怎么制作 怎么用微信申请微信号? 有些网页不能复制,可我想要复制下来,该怎么弄啊? 电脑网址怎么保存电脑怎么收藏网址 怎么办,还是最想去土耳其? 客家文化的来源 怎么mcontext关闭activity 在Android 中如何关闭应用以及所有的 Activity 蚂蟥钻进黄鳝里,可以吃吗 如何关闭所有Activity,只保留最底层的Activity? 水蛭可不可以生吃 android应用程序强制关闭执行activity哪个方法 Android编成:如何在多个activity的情况下关闭当前的activity? android 面试4: 如何退出Activity?如何安全退出已调用多个Activity的Application? 水蛭(蚂蝗)可以吃吗 如何关闭所有Activity,只保留最底层的Activity 蚂蝗可以吃吗?谢谢了,大神帮忙啊 Android开发中的finish()与onDestroy()方法都是用来结束activity的吧?两个有什么区别? 蚂蟥可以吃吗? 有谁吃过? 如何后台关闭Activity? 蚂蝗能吃嘛? 如何退出activity 蚂蝗可以吃么? 蚂蝗能吃么 蚂蝗能吃吗 android 如何关闭另一个package中的activity? android 返回键 关闭当前activity android中怎么kill掉一个activity? android service 怎么结束activity 如何结束一个activity 怎么在Fragment Android怎么finish掉Activity和fragment? 求推荐性价比高的家用轿车轮胎品牌,各种性能都不错,比较全能的那种有吗? 什么牌子奶粉好? 顿号和逗号区别 皇家美素力和皇家美素佳儿的区别是什么? 从日本回中国带美工刀片会被海关查吗? 奶粉好还是乳铁蛋白好? 乳桥蛋白比乳铁蛋白好吗?求科普 佐世保小学杀人事件回顾:日本小学生杀人,被网络当成追捧偶像!结果怎样? 顿号和逗号的区别口诀 天然博士乳铁蛋白好吗? 日本刀刀鞘松了,怎么让刀鞘变得紧些 日本“小学女杀手”辻菜摘落网记:娱乐的反噬,“偶像”女杀手,后来怎样? 逗号和顿号有什么区别 画漫画需要的工具~