`
z303729470
  • 浏览: 134132 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何退出应用程序

 
阅读更多
所以为了通用想到了另外一种方法,就是当我们点击“退出程序”菜单时,可以从当前Activity跳转到主Activity(就是我们打开程序最先启动的那个Activity),通过Intent告诉主Activity我要退出程序,然后主Activity调用finish()方法即可。由于这一过程很短暂,以致于我们没观察到Activity有任何切换就退出程序了!

同样为了让大家更容易理解,我做了一个Demo.为了省事,程序运行时我直接就从MainActivity跳转到BActivity,在BActivity有个“退出程序”菜单,点击会退出程序。
定义一个工具类Sysutil用来退出程序,这样定义好处可以在多个Activity的时候复用,代码如下:

其中: intent.setFlag(Intent.FLAG_ACTIVITY_CLEAR_TOP) 表示,开启目标activity时,会清理栈中的其他activity. 

在应用中如果要回到首页,也可以用这这个flag.
package com.tutor.exit;
import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
public class SysUtil {
	public static final int  EXIT_APPLICATION = 0x0001;
	
	private Context mContext;
	
	public SysUtil(Context context){
		this.mContext = context;
	}
	
	//完全退出应用
	public void exit(){
		
//		1.5 - 2.1之前下面两行是ok的,2.2之后就不行了,所以不通用
//		ActivityManager am = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);
//		am.restartPackage("com.tutor.exit");
		
		Intent mIntent = new Intent();
		mIntent.setClass(mContext, MainActivity.class);
		//这里设置flag还是比较 重要的
		mIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
		//发出退出程序指示
		mIntent.putExtra("flag", EXIT_APPLICATION);
		mContext.startActivity(mIntent);
	}
}


第三步:修改MainActivity.java,代码如下:
package com.tutor.exit;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);     
    }
    
   //这里用来接受退出程序的指令 
    @Override
    protected void onStart() {
    	int flag = getIntent().getIntExtra("flag", 0);
    	if(flag == SysUtil.EXIT_APPLICATION){
    		finish();
    	}
    	super.onResume();
    	
    }
    //程序启动后就进入了BActivity
    @Override
    protected void onResume() {
    	Intent mIntent = new Intent();
        mIntent.setClass(this, BActivity.class);
        startActivity(mIntent);
    	super.onStart();
    }
    
    
    //当activity是单例的时候,再次启动该activity就不会再调用 oncreate->onstart这些方法了
    @Override
    protected void onNewIntent(Intent intent) {
    	int flag = getIntent().getIntExtra("flag", 0);
    	if(flag == SysUtil.EXIT_APPLICATION){
    		finish();
    	}
    	super.onNewIntent(intent);
    }
}


第四步:新建一个Activity命名为BAcivity.java,记得要在配置文件里申明哦~代码如下:

package com.tutor.exit;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
public class BActivity extends Activity {
	public static final int MENU_EXITAPPLICATION = Menu.FIRST;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		TextView mTextView = new TextView(this);
		mTextView.setText("Welcome to Frankie's blog.");
		setContentView(mTextView);
	}
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		menu.add(0, MENU_EXITAPPLICATION, 0,"退出程序");
		return super.onCreateOptionsMenu(menu);
	}
	
	
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		if(item.getItemId() == MENU_EXITAPPLICATION){
			//其他Activity退出程序这样调用就ok了
			SysUtil mSysUtil= new SysUtil(BActivity.this);
			mSysUtil.exit();
		}
		return super.onOptionsItemSelected(item);
	}
} 

第五步:运行程序,直接进入了BActivity,点击菜单效果如下:


点击退出程序菜单,管你SDK是什么版本,就可以完全退出程序啦,有木有!有木有!呵呵~



这里要说明一下,如果我们的主Activity是单例模式的话,也就是launcheMode="singleTop|singleTask"如下面代码:
   <activity android:name=".MainActivity"
        		  android:launchMode="singleTop"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

这时MainActivity执行了onNewIntent()方法,退出程序 在这里完成,以上只是我个人的片面理解,如果大家有更好的通用方法,可以告诉我,相互学习,谢谢大家!!!
  • 大小: 15.8 KB
分享到:
评论

相关推荐

    vb.net关闭应用程序的代码

    在VB.NET编程环境中,关闭应用程序是一项常见的操作,无论是退出整个应用程序还是关闭单个窗口。本文将深入探讨如何在VB.NET中实现这一功能,并提供具体的代码示例,以关闭指定的应用程序,例如QQ。同时,我们将讨论...

    C#关闭应用程序进程

    本篇文章将深入探讨如何使用C#来安全地关闭应用程序进程,包括但不限于使用`Process`类、`Application.Exit()`方法以及环境退出等技术。 #### 使用`Process`类关闭进程 `System.Diagnostics.Process`类提供了丰富...

    9.如何关闭应用程序?(Visual C++编程 源代码)

    9.如何关闭应用程序?(Visual C++编程 源代码)9.如何关闭应用程序?(Visual C++编程 源代码)9.如何关闭应用程序?(Visual C++编程 源代码)9.如何关闭应用程序?(Visual C++编程 源代码)9.如何关闭应用程序?...

    浅谈DOT NET退出应用程序

    .NET框架提供了多种方式来退出应用程序,每种方法适用于不同的场景,具有不同的特性和效果。本文主要探讨了.NET Windows应用程序退出的五种常见方法,并详细分析了它们之间的差异。 首先,`Form.Close`方法用于关闭...

    Labview打开关闭应用程序.doc

    本文档“Labview打开关闭应用程序.doc”将深入探讨如何在Labview中实现对应用程序的控制,包括启动和关闭外部程序的功能。 在Labview中,我们可以通过使用“系统执行”函数来实现对应用程序的操作。这些函数位于...

    Android中实现再按一次返回键退出应用程序

    在Android应用开发中,通常我们希望用户在按下返回键时能够退出应用程序,但为了提供更好的用户体验,Android系统并不推荐直接在用户第一次点击返回键时就退出。为了实现“再按一次返回键退出应用程序”的功能,我们...

    在Win10平板模式下如何关闭应用程序-.docx

    然而,对于初次使用Windows 10平板模式的用户来说,了解如何在这个模式下关闭应用程序可能会稍感困惑。本文将提供一份详细的指南,帮助用户掌握在Win10平板模式下关闭应用程序的几种方法。 首先,Windows 10平板...

    一键退出应用程序.txt

    根据给定文件的信息,我们可以看到这是一个基于Android平台的应用程序管理类,旨在实现一个全局的、能够一次性关闭所有活动(Activity)的功能,从而达到快速且彻底地退出应用的目的。 ### 一、重要知识点解析 ###...

    退出应用程序工具类

    这个类包含了处理程序退出逻辑的函数,确保在用户关闭应用或者系统需要释放资源时,应用程序能正确地保存状态、清理资源并退出。下面将详细讨论这个知识点。 在Android开发中,由于系统的后台进程管理机制,大部分...

    安卓后台服务相关-Android中一键退出应用程序.rar

    本资源“安卓后台服务相关-Android中一键退出应用程序.rar”似乎包含了与实现一键退出应用相关的代码示例,这在某些场景下可能是必要的,比如优化内存占用或者提高用户体验。 首先,我们来深入理解一下Android的...

    android关闭应用程序

    本文将深入探讨在不同Android版本下关闭应用程序的方法、权限需求以及最佳实践。 ### 关闭应用程序的方法 #### 1. 使用`ActivityManager` 通过`ActivityManager`,开发者可以重启或终止一个包中的所有进程。这在...

    在Mac OS X里强制退出应用程序的六种方法.docx

    在 Mac OS X 里强制退出应用程序的六种方法 在 Mac OS X 系统中,强制退出应用程序是非常有必要的操作,因为有时候应用程序会卡住或崩溃,影响系统的稳定性。下面将介绍六种在 Mac 系统中强制退出程序的方法: ...

    Delphi 定时开启关闭应用程序及任务

    在本话题中,我们将探讨如何利用Delphi实现定时开启和关闭应用程序,以及如何结合系统托盘功能来实现这些功能。这在日常任务自动化、后台服务监控等方面具有广泛的应用。 首先,让我们深入了解Delphi中的定时任务。...

    苹果Mac系统中的应用程序怎么强制退出?.docx

    在苹果 Mac 系统中,当应用程序响应速度过慢或无响应时,用户可以使用强制退出命令关闭应用程序。下面将介绍五种强制退出应用程序的方法: 1. 使用 Dock 菜单栏里的强制退出键 在屏幕下方的 Dock 菜单栏中,找到...

    Adobe Flash Builder 4.5 Android Air 程序开发系列 之四 打开与关闭应用程序是的保存数据

    如果需要强制关闭应用程序,可以使用`NativeApplication.nativeApplication.exit()`。 当应用在前台或后台运行时,NativeApplication会触发`Event.ACTIVATE`和`Event.DEACTIVATE`事件。可以监听这些事件来处理不同...

    Android中一键退出应用程序

    在Android系统中,由于其设计原则,通常不鼓励开发者实现一键退出应用的功能,因为系统会自动管理应用程序的内存资源。然而,用户有时可能有需求快速退出应用,这就涉及到如何在Android程序中实现这一功能。本篇文章...

    退出android应用程序Demo

    在Android开发中,退出应用程序是一个常见的需求,尤其是在某些特定的应用场景下,用户可能希望完全关闭应用,而不是简单地退回到后台。本示例"退出Android应用程序Demo"将讲解如何实现这个功能,涉及到的关键知识点...

    Visual C++ 检测硬件插入并打开和关闭应用程序

    在开发Windows应用软件时,有时我们需要实现特定的功能,比如检测硬件设备的插入和移除,并根据这些事件来启动或关闭应用程序。在这个场景中,Visual C++ 提供了强大的API和库来实现这样的功能。以下是对这个主题的...

    Python os库关闭应用程序

    Python os库关闭应用程序

    释放应用程序占用的内存

    - 退出应用程序:用户可以通过任务管理器或系统菜单关闭不必要的应用程序,从而释放它们占用的内存。 - 清理缓存和临时文件:许多应用程序会缓存数据以提高性能,但这些缓存文件可能会占用大量内存。定期清理可以...

Global site tag (gtag.js) - Google Analytics