AndroidStudiofinish()方法的使用与解决app点击“返回”(直接退出)

AndroidStudiofinish()⽅法的使⽤与解决app点击“返
回”(直接退出)
在这⾥,我们将⽤到finish(),简单介绍⼀下它的使⽤:
finish()官⽅解析:Call this when your activity is done and should be closed. The ActivityResult is propagated back to whoever launched you via onActivityResult().“当你打开的Activity已经执⾏完成并且需要被关闭的时候可以调⽤这个⽅法,当你按返回的时候,它将返回到当前Activity的发起者。”
(不过这⼀段我不是很理解,我还是相信⾃⼰的实践吧。)
⼀、问题的提出
2019年⼗⼆⽉,我遇到了⼀个问题。在我做⼀个android app的时候,我有A B C 三个界⾯,其中A为主界⾯,预设两种情况:
①从A跳转(intent)到B 然后从 B跳转到A。
点击返回键的结果是:A→B,也就是说点击“返回”⼜从主界⾯跳转到B了,显然这样的⽤户体验⾮常糟糕。
②从A跳转(intent)到B 然后从B跳转到C。
点击返回的结果是:C→B→A,然⽽我要当需求是“点击返回,直接从C跳转到A”。结果显然,这不符合产品需求。
为此,我⽤了finish()函数来解决这个问题。
效果举例:
在C中添加finish()之后,点击“返回”,会直接回到主界⾯。
这样讲可能很难理解,举个例⼦吧:
在主界⾯A 点击“⽵海明珠”进⼊界⾯B
钌氧化铝催化剂点击左上⾓的⾃定义的back按钮,会回到主界⾯。
但是在主界⾯再次点击⽵海明珠,⼜再次点击⼿机系统⾃带的返回按钮后,界⾯再次回到主界⾯。
这时候在主界⾯上,你点击返回按钮,不是退出APP回到桌⾯了,⽽是回到了⽵海明珠界⾯。
仿形车床⼆、activity多次回跳问题的解决
为了解决这个问题,可以在你跳转界⾯的Intent中下⾯加⼀个finish函数。
如:
(1)先讲⼀下**“问题⼆**”我是在主界⾯中加了跳转到“⽵海明珠”的intent:
zhuH.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent_zh = new Intent(MainActivity.this,zhuhai.class);
startActivity(intent_zh);
finish();
}
});
这时候,在“⽵海明珠“界⾯中点击“返回(系统⾃带)”按钮的时候,APP不会再返回到主界⾯,⽽是会直接退出。
(2)显然这不能解决activity多次回跳的问题。
那么利⽤finish()的原理——“它将返回到当前Activity的发起者”,我们应当将finish()加在跳转到左上⾓⾃定义的back按钮的代码中:
zhuhaimingzhu.java中:
//控制返回按钮
back = findViewById(R.id.back);
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(zhuhai.this,MainActivity.class);
startActivity(intent);
finish();
矫形鞋这样,它就会直接回到主界⾯了。
于此同时问题⼆也解决了,直接将问题⼆中的finish()给注释掉就好了,其它activity也是同样的操作。
问题产⽣的思路:
为什么我会在“⽵海明珠”以及同级别下的activity中加finish()呢?
这是因为我有⼀个Activity多次回跳的问题没有解决,同时还有⼀个问题是,在我于主界⾯中点击返回
按钮后,会直接退出app,这样的⽤户体验⾮常不好,为了保持体验的⼀致性,我索性将⼆级activity(⽵海明珠、洪崖丹井等等)全部设置finish(),这样的话,只要在⼆级及以上页⾯中,只要点击了返回按钮就会直接退出APP,但⽤户可以在我⾃定义的左上⾓的back按钮返回activity界⾯。但,这舒适⽆奈之举,这样的⽤户体验效果确实不好。。。
三、点击返回按钮不退出app
那么如何解决,点击返回按钮不直接退出app呢?
设计思路t梁预制
1.点击两次返回按钮才退出app
2.点击返回按钮回到桌⾯但是不退出app,使app在后台运⾏
第⼀种:点击两次按钮退出app
设计:
①重写onBackPressed⽅法
onBackPressed() 捕获后退键按钮back的信息
②currentTimeMills 返回毫秒级别的系统时间气体处理
③放在oncreate⽅法下
private static final int TIME_EXIT=2000;
private long mBackPressed;
@Override
public void onBackPressed(){    //onBackPressed() 捕获后退键按钮back的信息
if(mBackPressed+TIME_EXIT>System.currentTimeMillis()){ //currentTimeMillis,返回毫秒级别的系统时间
return;
}else{
Toast.makeText(this,"再点击⼀次返回退出程序", Toast.LENGTH_SHORT
).show();
mBackPressed=System.currentTimeMillis();
}
}
第⼆种:单击回到桌⾯,APP在后台运⾏
单击回到桌⾯,app仍在后台运⾏
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent home = new Intent(Intent.ACTION_MAIN);
home.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
home.addCategory(Intent.CATEGORY_HOME);
startActivity(home);
return true;
}
KeyDown(keyCode, event);
}
总结
黑纸白字
到此这篇关于Android Studio finish()⽅法的使⽤与解决app点击“返回”(直接退出)的⽂章就介绍到这了,更多相关Android Studio finish()⽅法内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

本文发布于:2024-09-23 08:21:03,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/277418.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:返回   点击   按钮   解决   问题   理解   退出   主界
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议