在Android中退出程序比较麻烦,尤其是在多个Activity的程序中,在2.2之前可以采用如下代码退出程序:
ActivityManager am = (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE);
am.restartPackage(getPackageName());
此种方法是一种最方便和最简单的退出程序的办法,但是在2.2和2.2之后就不能用了,那么如果我们要退出程序有4种办法:
- 采用content view栈:如果程序是多界面,但是又没有强制要求每一个界面一个Activity,可以将每个界面设计为一个View,在界面切换时,只需要调用Activity的setContentView方法设置Activity的Contentview,这样退出程序只需要将这一个Activity退出 就可以了,但是需要设计一个栈来管理content view。
- 可以自定义一个Activity的栈,在程序退出时将栈中的所有的Activity进行finish,这种方法,我以前的文章中有详述。
- 前两种方法的精髓之处都是需要自己设计一个栈用来管理界面或者Activity,这样程序就比较复杂一些。 第3中方法就是,先让程序到Home界面,然后再将process杀死:代码如下:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
android.os.Process.killProcess(Process.myPid());
- 还有一种就是使用方法是使用Android的Broadcast机制。在所有的Activity中注册退出程序的消息,当收到消息时调用finish方法。 然后再有退出程序功能的Activity上广播关闭消息。代码如下:
package com.kingtone.activity;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
/**
* 所有Activity的父类,用来注册退出程序的广播事件,
* 并且对收到的退出程序事件进行处理
* @author Administrator
*
*/
public class CommonActivity extends Activity {
//广播的内部类,当收到关闭事件时,调用finish方法结束activity
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
finish();
}
};
@Override
public void onResume() {
super.onResume();
//在当前的activity中注册广播
IntentFilter filter = new IntentFilter();
filter.addAction(GlobalVarable.EXIT_ACTION);
this.registerReceiver(this.broadcastReceiver, filter);
}
}
在需要退出程序的Activity(CommonActivity的子类)中,退出程序代码如下:
Intent intent = new Intent();
intent.setAction(GlobalVarable.EXIT_ACTION); // 退出动作
this.sendBroadcast(intent);// 发送广播
super.finish();
//退出后台线程,以及销毁静态变量
System.exit(0);
分享到:
相关推荐
做Android项目的时候发现一个问题:当应用程序退出了,点击”设置”查看应用程序,界面显示着可以点击”强制关闭”. 我认为造成这样的原因是还有开启的activity没有被destroy,然后做调试,之后发现开启的activity应该是...
大部分时候,程序员也不想把软件做成流氓软件,没办法,领导说了算。 我们在使用某些Android应用的时候,可能会发现安装了某应用以后,会有一些服务也会随之运行。而且,这些服务每次都会随着手机开机而启动。有的...
然后在程序退出的地方调用它们的 finish()方法。使用全局变量。对了,第一个想到的就是继承 Application,代码入下: 代码如下:public class AgentApplication extends Application { private List<Activi
现在市面上很多应用都会有当用户按返回键的时候提示用户:再按一次将退出应用的提示,也就是双击双击返回键退出应用,接下来我们就用几种办法来实现这个功能 效果图 实现 第一种办法 响应Activity的 onKeyUp事件,两...
在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,实现与网页的交互。当我们处理WebView的导航操作时,有时会遇到一个常见问题:用户点击后退按钮,但WebView并未退出或者...
1. **关闭杀毒软件**:有些安全软件可能会误报驱动为恶意程序,因此在安装前最好暂时禁用或退出这些软件。 2. **开启USB调试**:在手机上,用户需要进入“开发者选项”并开启“USB调试”,以允许电脑进行调试操作。 ...
在Android应用开发中,有时我们需要处理程序异常情况,例如,当应用程序崩溃或遇到无法恢复的错误时,我们可能希望自动重启应用以提供更好的用户体验。"android 捕获异常重启APP"这一主题就是关于如何在Android应用...
在Android系统中,SD卡是用户扩展存储空间的重要方式,用于存放应用程序、媒体文件和个人数据。然而,在刷入新系统后,有时会出现无法识别或找不到SD卡的问题,这可能是由于多种原因引起的。以下是一些可能的解决...
9.11、彻底退出当前程序 212 9.12、获取应用程序的名称,包名,版本号和图标 212 9.13、调用ANDROID INSTALLER 安装和卸载程序 215 9.14、后台监控应用程序包的安装&卸载 216 9.15、显示应用详细列表 224 9.16、寻找...
Android WebView 内存泄露的解决方法 Android WebView 是一个非常常用的组件,然而它也存在一些问题,其中之一就是内存泄露的问题。在 Android 中,WebView 内存泄露的解决方法主要有两种:一种是避免在 XML 中直接...
1. Android 系统版本 2.0 以下,这个没办法,想其他办法解决切换动画吧。 2. 在 ActivityGroup 等的嵌入式 Activity 中,这个比较容易解决,用如下方法就可以了: ```java this.getParent()....
1.使用命令行时,当转某个类失败时将继续,而不退出程序 2.解决读取class annotation 的一个问题 Fixes issue 42 3.rename package pxb.android.dex2jar to com.googlecode.dex2jar 4.issue 33, issue 43在启动...
在Android系统中,MediaTek(MTK)摄像头驱动是设备硬件接口的重要组成部分,它负责连接摄像头传感器和上层应用程序框架,使得系统能够捕捉图像和录制视频。本文将深入探讨MTK相机调试过程中遇到的常见问题及其解决...
在Android系统中,"最近任务"通常指的是最近使用的应用程序列表,用户可以通过长按Home键或者在多...在实际开发过程中,遇到类似问题时,一定要耐心细致,充分利用Android的调试工具和社区资源,以找到最佳的解决办法。
如果单例中持有Activity的Context,而单例的生命周期与应用程序一样长,当Activity退出时,由于单例仍然持有对Activity的引用,Activity的内存无法被正确回收。解决方法是在单例中使用`getApplicationContext()`代替...
在Android应用开发中,扫描二维码是一项常见的功能,但有时候用户可能会出于隐私保护等原因禁止应用访问摄像头,这会导致扫描二维码时出现权限报错并可能导致程序崩溃。本文将详细讲解如何处理这种用户禁止权限的...
Android 一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导开发 IOS 由苹果公司开发的移动操作系统 Webkit 一个开源的浏览器引擎,在手机上的...
LeadBBS,中文ASP论坛程序名称,于2002年由著名ASP程序员SpiderMan等编写而成。在论坛兴盛的2002-2005年曾经风靡一时,LEADBBS以其短小精干、运行速度快而受到广大网站建设者,特别是个人网站的欢迎。许多论坛,特别...
一般而言,一个编写规范的Android程序,会把所有字符串资源都分离出来,放在values的strings.xml文件中,values目录中存放的是默认语言字符串资源(一般为英文)。APK程序在处理字符串资源时会先判断语言环境,然后...
QCN文件会保存在固件目录内)、DownFW(只下载模块固件CP部分)、DownAP(只下载模块固件AP部分)、PushUpdate(下载补丁)、RecoverQCN(只...模块端口号)、Exit(退出模块升级主程序)、MeidCheck(检查Meid设置)...