【OSC手机App技术解析】- Android完全退出程序
2012-08-27 14:16
381 查看
做过Android开发的人都知道,应用程序点击返回键 或者 代码显示调用了Activity.finish()方法都无法完全退出,通过任务管理工具可以看到他们还在进程中。
下面我将分享 OSChina.NET Android版客户端 完全退出程序的方法:
1. 添加权限
2.
导入AppManager工具类
AppManager类是一个自定义的工具类,作用是将应用程序所有启动的Activity都添加到堆栈,最终退出应用程序时全部释放掉Activity。
完整的AppManager类代码:
3.
使用AppManager工具类
Activity启动时,在的onCreate方法里面,将该Activity实例添加到AppManager的堆栈
需要退出程序时,调用
如果大家有什么疑问的话,欢迎在下面回帖一起探讨。
PS:
OSC Android客户端下载地址: http://www.oschina.net/uploads/osc.apk
OSC iPhone客户端下载地址: http://www.oschina.net/uploads/osc.ipa
OSC Windows Phone客户端下载地址: http://www.oschina.net/uploads/osc.xap
转载:http://www.oschina.net/question/157182_59222
下面我将分享 OSChina.NET Android版客户端 完全退出程序的方法:
1. 添加权限
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
2.
导入AppManager工具类
AppManager类是一个自定义的工具类,作用是将应用程序所有启动的Activity都添加到堆栈,最终退出应用程序时全部释放掉Activity。
完整的AppManager类代码:
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);
如果大家有什么疑问的话,欢迎在下面回帖一起探讨。
PS:
OSC Android客户端下载地址: http://www.oschina.net/uploads/osc.apk
OSC iPhone客户端下载地址: http://www.oschina.net/uploads/osc.ipa
OSC Windows Phone客户端下载地址: http://www.oschina.net/uploads/osc.xap
转载:http://www.oschina.net/question/157182_59222
相关文章推荐
- 【OSC手机App技术解析】- Android完全退出程序
- 【OSC手机App技术解析】- Android完全退出程序
- 【OSC手机App技术解析】- 集成新浪微博Android SDK
- 【OSC手机App技术解析】- 富文本列表的展示
- 【OSC手机App技术解析】- 气泡对话列表
- 【OSC手机App技术解析】- 富文本列表的展示
- 【OSC手机App技术解析】- 列表异步线程加载图片
- 【OSC手机App技术解析】- 用户通知
- 【OSC手机App技术解析】- 气泡对话列表
- 【OSC手机App技术解析】- 列表异步线程加载图片
- Android Fragment完全解析及:: Android手机平板使用Fragment实现兼容手机和平板的程序
- 【OSC手机App技术解析】- 气泡对话列表
- 【OSC手机App技术解析】- 编辑框插入表情图片
- 【OSC手机App技术解析】- 应用内Web链接的处理
- 【OSC手机App技术解析】- 集成新浪微博Android SDK
- 【OSC手机App技术解析】- 应用内Web链接的处理
- 【OSC手机App技术解析】- 用户专页
- 【OSC手机App技术解析】- 用户通知
- 【OSC手机App技术解析】- 在WebView中组装HTML
- 【OSC手机App技术解析】- 编辑框插入表情图片