Android学习 - 退出整个应用方法

[摘要]在Android应用开发中,难免会遇到需要完全退出整个应用的时候,本文介绍Android中退出整个应用的方法,并提供详细的示例代码供参考。

在Android应用开发中,难免会遇到需要完全退出整个应用的时候,我在网上也看了一下,感觉通过广播是个很好的方法,在这里,我用了另外一个方法,简而言之,通过单例模式把每个Activity 的引用添加到一个全局链表中,每次退出程序调用System.exit(0)时,先调用链表中Activity 的finish方法。直接上代码:

1 import java.util.LinkedList;
2 import java.util.List;
3 import Android.app.Activity;
4 import Android.app.AlertDialog;
5 import Android.app.Application;
6 import Android.content.DialogInterface;
7 import Android.content.Intent;
8
9 public class SysApplication extends Application {
10 private List<Activity> mList = new LinkedList<Activity>(); //用于存放每个Activity的List
11 private static SysApplication instance; //SysApplication实例
12
13 private SysApplication() { //私有构造器,防止外面实例化该对象,
14 }
15
16 public synchronized static SysApplication getInstance() { //通过一个方法给外面提供实例
17 if (null == instance) {
18 instance = new SysApplication();
19 }
20 return instance;
21 }
22
23 // add Activity
24 public void addActivity(Activity activity) {
25 mList.add(activity);
26 }
27
28 public void exit() { //遍历List,退出每一个Activity
29 try {
30 for (Activity activity : mList) {
31 if (activity != null)
32 activity.finish();
33 }
34 } catch (Exception e) {
35 e.printStackTrace();
36 } finally {
37 System.exit(0);
38 }
39 }
40
41 @Override
42 public void onLowMemory() {
43 super.onLowMemory();
44 System.gc(); //告诉系统回收
45 }
46
47 }

在每个Activity的onCreate中添加下面代码,把每个创建的Activity添加到List中管理:

1 public void onCreate(Bundle savedInstanceState) {
2 super.onCreate(savedInstanceState);
3 SysApplication.getInstance().addActivity(this); //创建Activity时,添加到List进行管理。
4 }

在我们需要退出程序的时候执行下面代码:

1 SysApplication.getInstance().exit(); //调用退出方法


Android学习 - 退出整个应用方法(2)

2012-10-07 18:02  来源:csdn  作者:weidi1989  字号:T|T

[摘要]本文介绍Android中退出整个应用的方法,主要通过使用广播机制退出整个应用,并提供详细的示例代码供参考。

前面跟大家分享了通过建立Activity堆栈列表,把所有Activity通过继承基类或调用函数的方式记录下来,退出时逐一finish;今天再跟大家分享一下通过使用广播机制退出整个应用,我们首先自定义一个抽象的MyActivity继承系统的Activity,然后在这个自定义的MyActivity中添加退出的方法,然后在整个应用中的所有Activity都继承我们自定义的MyActivity,当我们需要完全退出的时候,就可以调用这个close()方法,实现完全退出,个人感觉比之前的那个方法更实用,更方便,好了,废话不多说,直接分享核心代码:

1 public abstract class MyActivity extends Activity {
2
3 // 写一个广播的内部类,当收到动作时,结束activity
4 private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
5 @Override
6 public void onReceive(Context context, Intent intent) {
7 close();
8 }
9 };
10
11 @Override
12 protected void onCreate(Bundle savedInstanceState) {
13 super.onCreate(savedInstanceState);
14 // 在onCreate中注册广播
15 IntentFilter filter = new IntentFilter();
16 filter.addAction(Attribute.PAGENAME);
17 registerReceiver(this.broadcastReceiver, filter); // 注册
18 }
19
20 /**
21 * 关闭
22 */
23 public void close() {
24 Intent intent = new Intent();
25 intent.setAction(Attribute.PAGENAME); // 说明动作
26 sendBroadcast(intent);// 该函数用于发送广播
27 finish();
28 }
29 @Override
30 protected void onDestroy() {
31 super.onDestroy();
32 unregisterReceiver(broadcastReceiver);// 在onDestroy注销广播。
33 }
34 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值