APP应用完美退出的方法的尝试

   会做出这个demo,主要原因在于下班后看到群里都在谈论这个问题,一下子兴趣由起,下班了吃完饭继续加班搞个demo来试试。废话不多说了,以前写上学作文也这样,先搞个长长的开头凑字数安静

    当然,说到完美APP退出,我以前经常用的方法就是使用List来存储每个Activity,然后要退出的时候,就是要关掉所有的Activity,直接调用finishAll就行啦,其实就是一个ActivityManager的管理器而已。但是。。。但是。。。今天在群里有人问了这个问题,群主竟然说用这种方法来退出应用的别说是我群里的人。瞬间觉得自己low了很多,麻痹我不是这么low的人啊,躺着也中枪啊,我毕设都是这么做的啊!!!于是,兴(一)趣(气)一(之)来(下)搞起了demo来,查了网上的资料,貌似有两种比较能接受,且还算完美实现退出的方法。下面就具体的讲下实现的方法吧.。

   一。发送广播退出(好像很多人都知道)

    这种退出方式很早就有所耳闻,但没去尝试,今天就网上搜了下,实现了,确实可以,比较推荐。

    具体代码是这样的,先建一个Activity的基类,作为来放Broadcast的地方,这样其他Activity只要继承此基类就行了,不用每次都要重写一遍注册和注销广播。

    代码如下:

public class BaseActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		IntentFilter filter = new IntentFilter();
		filter.addAction("com.jrue.exitApp");
		registerReceiver(mExitReceiver, filter);

	}

	private BroadcastReceiver mExitReceiver = new BroadcastReceiver() {
		@Override
		public void onReceive(Context context, Intent intent) {
			if ("com.jrue.exitApp".equals(intent.getAction())) {
				context.unregisterReceiver(this);
				finish();
			}
		}
	};

}

 

    在退出的时候只要去发送这个广播就行啦:

                     case R.id.exit_use_broadcast:
			
			Intent intent = new Intent("com.jrue.exitApp");
			getApplicationContext().sendBroadcast(intent);
			
	        	break;


好!完美运行,这个方法可以。


二。切换到后台,最后finish掉(其实不知道怎么命名啦)

   原来大概是这样的,不知道会不会理解错。就是通过setFlags将其改变为 Intent.FLAG_ACTIVITY_CLEAR_TOP 状态,而这个状态具体怎么讲呢,就是进入的Activity若在栈中已经存在的时候,则将此Activity之上的其他Activity移除栈,以达到将目标Activity移至栈顶的目的。然后setAction的 Intent.ACTION_MAIN 找到程序的第一个Activity,也就是程序第一次打开出现的Activity,很有可能就是栈底的Activity,所以我们这样做的目的就很简单啦。

   总结一下:就是故意放进去一个应用打开第一个打开的activity,然后改变Flags,让第一个Activity之上的Activity出栈,使第一个Activity顺利达到栈顶,然后直接finish(),因为栈中也就只有一个Activity了,finish就是关闭应用了。太骚了这方法。

   代码如下:

	    Intent intent2 = new Intent(Intent.ACTION_MAIN);  
            intent2.addCategory(Intent.CATEGORY_HOME);  
            intent2.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  
            startActivity(intent2);  
           // android.os.Process.killProcess(android.os.Process.myPid());
            finish();

好啦。也就这样了,demo的下载地址也会奉上,有用最好了,没用可以无视之无视之~~~小弟不才啊!


demo下载




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值