问题
Android设置页面的发动模式为singletask之后,当按Home退出时,再从头打开使用,还会进入首发动页。就会形成一些使用需要从头登录,当时页数据丢掉等问题
解决
去除发动页的singletask的发动模式(AndroidManifest.xml)
在发动页activity添加如下代码
1//防止从桌面发动程序后,会从头实例化入口类的activity2if(!this.isTaskRoot()){//判别当时activity是不是地点任务栈的根3Intentintent=getIntent();4if(intent!=null){5Stringaction=intent.getAction();6if(intent.hasCategory(Intent.CATEGORY_LAUNCHER)&&Intent.ACTION_MAIN.equals(action)){7finish();8return;9}10}11}
剖析
虽然咱们解决了问题,但咱们也要剖析解决问题的思路。
哈哈哈,或许你说思路便是百度,别人这样写,横竖我用了也成功了。(but咱们要往优异程序员的方向发展)
第一步(看代码进行了什么处理)
第二行:this.isTaskRoot()判别是否是activity栈最下方一个
第三行:getIntent()获取该上一个页面传过来的intent的信息。由于在发动页中,咱们会设置
<intent-filter><actionandroid:name=”android.intent.action.MAIN”/><categoryandroid:name=”android.intent.category.LAUNCHER”/>intent-filter>
第六行:判别是否经过发动页发动,也有或许是代码中的需求跳转,这种状况不能把页面毁掉了。
第七行:毁掉当时发动页
【思考】那么为什么如果是外部发动的就finish呢?
第二步(看看别人怎么说)
参考1:https://www.jianshu.com/p/eea14ca0b164
1、IT大王遵守相关法律法规,由于本站资源全部来源于网络程序/投稿,故资源量太大无法一一准确核实资源侵权的真实性;
2、出于传递信息之目的,故IT大王可能会误刊发损害或影响您的合法权益,请您积极与我们联系处理(所有内容不代表本站观点与立场);
3、因时间、精力有限,我们无法一一核实每一条消息的真实性,但我们会在发布之前尽最大努力来核实这些信息;
4、无论出于何种目的要求本站删除内容,您均需要提供根据国家版权局发布的示范格式
《要求删除或断开链接侵权网络内容的通知》:https://itdw.cn/ziliao/sfgs.pdf,
国家知识产权局《要求删除或断开链接侵权网络内容的通知》填写说明: http://www.ncac.gov.cn/chinacopyright/contents/12227/342400.shtml
未按照国家知识产权局格式通知一律不予处理;请按照此通知格式填写发至本站的邮箱 wl6@163.com