android退出程序代码(怎么在android实现退出功能)

:暂无数据 2026-09-02 17:20:02 :0

android退出程序代码(怎么在android实现退出功能)

其实android退出程序代码的问题并不复杂,但是又很多的朋友都不太了解怎么在android实现退出功能,因此呢,今天小编就来为大家分享android退出程序代码的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

本文目录

怎么在android实现退出功能

Android Studio中,随时随地的退出程序(记得导入相应的包,可以设置自动导入所需的包的,下面的代码还没有导入包的部分):

①新建一个 ActivityCollector 类,作为活动管理器,代码如下所示:
public class ActivityCollector {
public static List《Activity》 activities = new ArrayList《》();

public static void addActivity(Activity activity) {
activities.add(activity);
}

public static void removeActivity(Activity activity) {
activities.remove(activity);
}

public static void finishAll() {
for (Activity activity : activities)
{

if(!activity.isFinishing())
{
activity.finish();
}
}
activities.clear();

//以下是杀死当前程序进程的代码,保证程序彻底退出。
android.os.Process.killProcess(android.os.Process.myPid());
}
}
②再新建一个类BaseActivity,并让所有活动继承这个类,也就是其他的全部活动都改为extends BaseActivity,而不是原来的extends AppCompatActivity。

public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(“BaseActivity“, getClass().getClass().getSimpleName());
ActivityCollector.addActivity(this);
}

@Override
protected void onDestroy() {
super.onDestroy();
ActivityCollector.removeActivity(this);
}

}
③在你想要退出程序的页面(Activity)的setContentView(R.layout.*****); 下面加上如下代码,从而实现点击一个按钮退出整个程序。
Button button3 = (Button) findViewById(R.id.*****);
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ActivityCollector.finishAll();
}
});
//*号部分看具体情况而定

实现android 再按一次退出程序代码

  
private
long
exitTime
=
0;
/**
*
捕捉返回事件按钮
*
*
因为此
Activity
继承
TabActivity
用
onKeyDown
无响应,所以改用
dispatchKeyEvent
*
一般的
Activity
用
onKeyDown
就可以了
*/
@Override
public
boolean
dispatchKeyEvent(KeyEvent
event)
{
if
(event.getKeyCode()
==
KeyEvent.KEYCODE_BACK)
{
if
(event.getAction()
==
KeyEvent.ACTION_DOWN
&&
event.getRepeatCount()
==
0)
{
this.exitApp();
}
return
true;
}
return
super.dispatchKeyEvent(event);
}
/**
*
退出程序
*/
private
void
exitApp()
{
//
判断2次点击事件时间
if
((System.currentTimeMillis()
-
exitTime)
》
2000)
{
Toast.makeText(MainActivity.this,
“再按一次退出程序“,
Toast.LENGTH_SHORT).show();
exitTime
=
System.currentTimeMillis();
}
else
{
finish();
}
}

android关闭应用程序

Android程序有很多Activity,比如说主窗口A,调用了子窗口B,如果在B中直接finish(), 接下里显示的是A。在B中如何关闭整个Android应用程序呢?本人总结了几种比较简单的实现方法。

1. Dalvik VM的本地方法
android.os.Process.killProcess(android.os.Process.myPid()) //获取PID
System.exit(0); //常规java、c#的标准退出法,返回值为0代表正常退出

2. 任务管理器方法
首先要说明该方法运行在Android 1.5 API Level为3以上才可以,同时需要权限
ActivityManager am = (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE);
am.restartPackage(getPackageName());
系统会将,该包下的 ,所有进程,服务,全部杀掉,就可以杀干净了,要注意加上
《uses-permission android:name=\“android.permission.RESTART_PACKAGES\“》《/uses-permission》

3. 根据Activity的声明周期
我们知道Android的窗口类提供了历史栈,我们可以通过stack的原理来巧妙的实现,这里我们在A窗口打开B窗口时在Intent中直接加入标志 Intent.FLAG_ACTIVITY_CLEAR_TOP,这样开启B时将会清除该进程空间的所有Activity。
在A窗口中使用下面的代码调用B窗口
Intent intent = new Intent();
intent.setClass(Android123.this, CWJ.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //注意本行的FLAG设置
startActivity(intent);
接下来在B窗口中需要退出时直接使用finish方法即可全部退出。

4.自定义一个Actiivty 栈,道理同上,不过利用一个单例模式的Activity栈来管理所有Activity。

不过建议使用第一种方式来退出应用程序

安卓退出程序的方式代码怎么实现

建议你看看开源中国的客户端,里面已经帮你封装好了。我简单的说一下思路:1、在你的application里面定义一个记录activity列表的栈:private
static
Stack
activityStack;2、定义一个BaseActivity,在他的onCreate方法里面将自己添加到栈,在onDestroy里面将自己从栈移除3、当你想要关闭所有的activity的时候,遍历这个栈,依次finish掉所有的activity就好了

android 怎么判断应用是否退出

在Android中退出程序比较麻烦,尤其是在多个Activity的程序中,在2.2之前可以采用如下代码退出程序:

Java代码

[java]
ActivityManager am = (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE);
am.restartPackage(getPackageName());

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杀死:代码如下:

[java]
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());

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

4.还有一种就是使用方法是使用Android的Broadcast机制。在所有的Activity中注册退出程序的消息,当收到消息时调用finish方法。 然后再有退出程序功能的Activity上广播关闭消息。代码如下:

[java]
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);
}
}

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的子类)中,退出程序代码如下:

[java]
Intent intent = new Intent();
intent.setAction(GlobalVarable.EXIT_ACTION); // 退出动作
this.sendBroadcast(intent);// 发送广播
super.finish();
//退出后台线程,以及销毁静态变量
System.exit(0);

Intent intent = new Intent();
intent.setAction(GlobalVarable.EXIT_ACTION); // 退出动作
this.sendBroadcast(intent);// 发送广播
super.finish();
//退出后台线程,以及销毁静态变量
System.exit(0);

监听并处理用户按下back键的方法

[java]
package com.example.android_test01;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
System.out.println(“你按下了back1“);
show_simple();
return super.onKeyDown(keyCode, event);
}
//先调用的onKeyDown(int keyCode, KeyEvent event)方法,然后调用的onBackPressed()方法;
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
System.out.println(“按下back,立刻退出activity时调用“);
super.onBackPressed();
}

public void show_simple()
{
AlertDialog.Builder builder=new Builder(this);
builder.setTitle(“欢迎使用本软件“);
builder.setPositiveButton(“确定“, new OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
//退出应用;
finish();
}
});
builder.setNegativeButton(“取消“, new OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub

}
}) ;
builder.create().show();

}
}

package com.example.android_test01;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
System.out.println(“你按下了back1“);
show_simple();
return super.onKeyDown(keyCode, event);
}
//先调用的onKeyDown(int keyCode, KeyEvent event)方法,然后调用的onBackPressed()方法;
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
System.out.println(“按下back,立刻退出activity时调用“);
super.onBackPressed();
}

public void show_simple()
{
AlertDialog.Builder builder=new Builder(this);
builder.setTitle(“欢迎使用本软件“);
builder.setPositiveButton(“确定“, new OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
//退出应用;
finish();
}
});
builder.setNegativeButton(“取消“, new OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub

}
}) ;
builder.create().show();

}
}

android 开发应用程序中,退出功能怎么做啊

可以使用java的回收机制,也能使用android特有的活动生存周期,以下方法均可尝试使用:
1.System.gc(); 提示系统回收资源
2.System.exit(0); 系统退出
3.this.finish();在activity中调用结束该活动,如果是唯一运行的活动则应用程序结束
4.onDestroy();activity结束时调用,可以写一些释放资源的程序

安卓程序退出代码

Android2.2版本
Intent
startMain
=
new
Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
System.exit(0);//退出程序
Android2.2以下版本
1、在配置文件中加入权限:
《uses-permission
android:name=“android.permission.RESTART_PACKAGES“
/》
  2、ActivityManager
am
=
(ActivityManager)getSystemService
(Context.ACTIVITY_SERVICE);
    am.restartPackage(getPackageName());

关于android退出程序代码到此分享完毕,希望能帮助到您。

android退出程序代码(怎么在android实现退出功能)

本文编辑:admin

本文相关文章:


android高级编程(android高级编程培训)

android高级编程(android高级编程培训)

各位老铁们,大家好,今天由我来为大家分享android高级编程,以及android高级编程培训的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年8月28日 13:30

activity跳转到另一个activity(android 怎么从activity跳到另一个activity的fragment)

activity跳转到另一个activity(android 怎么从activity跳到另一个activity的fragment)

本篇文章给大家谈谈activity跳转到另一个activity,以及android 怎么从activity跳到另一个activity的fragment对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位

2026年8月20日 00:50

android mvvm框架(android 怎么使用mvvm框架)

android mvvm框架(android 怎么使用mvvm框架)

各位老铁们,大家好,今天由我来为大家分享android mvvm框架,以及android 怎么使用mvvm框架的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧

2026年8月11日 19:40

mqtt协议详解(android消息推送GCM、XMPP、MQTT三种方案的优劣,越仔细越好,有具体分析更好!)

mqtt协议详解(android消息推送GCM、XMPP、MQTT三种方案的优劣,越仔细越好,有具体分析更好!)

“mqtt协议详解”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看mqtt协议详解(android消息推送GCM、XMPP、MQTT三种方案的优劣,越仔细越好,有具体分析更好!)!

2026年8月2日 00:00

accdata(安卓手机,文件管理android的data里com.snssdk.api.embed是什么文件)

accdata(安卓手机,文件管理android的data里com.snssdk.api.embed是什么文件)

本篇文章给大家谈谈accdata,以及安卓手机,文件管理android的data里com.snssdk.api.embed是什么文件对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年7月13日 02:20

android sdk安装失败(手机androidsdk安装失败怎么办)

android sdk安装失败(手机androidsdk安装失败怎么办)

大家好,今天小编来为大家解答以下的问题,关于android sdk安装失败,手机androidsdk安装失败怎么办这个很多人还不知道,现在让我们一起来看看吧!

2026年7月6日 01:10

更多文章:


字母f是什么意思?如何将flash变成透明的背景

字母f是什么意思?如何将flash变成透明的背景

本篇文章给大家谈谈f,以及字母f是什么意思对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月11日 10:50

turtles歌曲(哪位大神有turtles(乌龟组合)的<谢谢>的歌词中文翻译 感激不尽)

turtles歌曲(哪位大神有turtles(乌龟组合)的<谢谢>的歌词中文翻译 感激不尽)

“turtles歌曲”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看turtles歌曲(哪位大神有turtles(乌龟组合)的的歌词中文翻译 感激不尽)!

2026年10月11日 10:00

java转义字符(java中的转义字符的作用是什么)

java转义字符(java中的转义字符的作用是什么)

其实java转义字符的问题并不复杂,但是又很多的朋友都不太了解java中的转义字符的作用是什么,因此呢,今天小编就来为大家分享java转义字符的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 09:40

金山铁路22号线(请问现在轨道交通22号线金山铁路是个什么情况据说9月28日就开通了啊~~~)

金山铁路22号线(请问现在轨道交通22号线金山铁路是个什么情况据说9月28日就开通了啊~~~)

“金山铁路22号线”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看金山铁路22号线(请问现在轨道交通22号线金山铁路是个什么情况据说9月28日就开通了啊~~~)!

2026年10月11日 09:10

repercussions(都是余波,repercussions和aftermath有什么区别啊)

repercussions(都是余波,repercussions和aftermath有什么区别啊)

今天给各位分享都是余波,repercussions和aftermath有什么区别啊的知识,其中也会对都是余波,repercussions和aftermath有什么区别啊进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月11日 09:00

dropdownlist 绑定(DropDownList 绑定所有项 并 显示指定项)

dropdownlist 绑定(DropDownList 绑定所有项 并 显示指定项)

本篇文章给大家谈谈dropdownlist 绑定,以及DropDownList 绑定所有项 并 显示指定项对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年10月11日 08:50

协方差计算公式(协方差的计算公式)

协方差计算公式(协方差的计算公式)

这篇文章给大家聊聊关于协方差计算公式,以及协方差的计算公式对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年10月11日 08:10

易语言网页api接口怎么调用(易语言,怎么读取网页json的api)

易语言网页api接口怎么调用(易语言,怎么读取网页json的api)

本篇文章给大家谈谈易语言网页api接口怎么调用,以及易语言,怎么读取网页json的api对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月11日 08:00

majority of(the majority of 和 a majority of的区别以及用法例句)

majority of(the majority of 和 a majority of的区别以及用法例句)

这篇文章给大家聊聊关于majority of,以及the majority of 和 a majority of的区别以及用法例句对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年10月11日 07:40

汉字机内码查询表(1个汉字的机内码是几位谢谢)

汉字机内码查询表(1个汉字的机内码是几位谢谢)

大家好,关于汉字机内码查询表很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于1个汉字的机内码是几位谢谢的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年10月11日 07:20

最近更新

热门文章

标签列表