newintent的教训

本文详细介绍了如何使用单例模式在Android应用中实现退出功能,并通过onNewIntent方法处理退出意图。重点阐述了在onNewIntent中获取退出标记并完成应用退出流程,避免了重复创建Activity的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

onCreate是用来创建一个Activity也就是创建一个窗体,但一个Activty处于任务栈的顶端,若再次调用startActivity去创建它,则不会再次创建。若你想利用已有的Acivity去处理别的Intent时,你就可以利用onNewIntent来处理。在onNewIntent里面就会获得新的Intent.

今天使用 单例模式 来实现应用退出

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

但是在起始页的 

@Override
protected void onNewIntent(Intent intent) {
// 实现主窗单例模式
// 再次启动该activity就不会再调用 oncreate->onstart这些方法了


nt flag = getIntent().getIntExtra("flag", 0)
if (flag == SysUtil.EXIT_APPLICATION) {
finish();
}
super.onNewIntent(intent);
}

怎么也得不到flag 的正确值 

原来是  在 onNewIntent 中 

Note that getIntent() still returns the original Intent. You can use setIntent(Intent) to update it to this new Intent. 

改为

int flag = intent.getIntExtra("flag", 0);就OK了 

不看函数说明的教训啊


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值