av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Android Studio finish()方法的使用與解決app點(diǎn)擊“返回”(直接退出)

瀏覽:3日期:2022-09-24 18:27:01

在這里,我們將用到finish(),簡(jiǎn)單介紹一下它的使用:

finish()官方解析:Call this when your activity is done and should be closed. The ActivityResult is propagated back to whoever launched you via onActivityResult().“當(dāng)你打開(kāi)的Activity已經(jīng)執(zhí)行完成并且需要被關(guān)閉的時(shí)候可以調(diào)用這個(gè)方法,當(dāng)你按返回的時(shí)候,它將返回到當(dāng)前Activity的發(fā)起者?!?不過(guò)這一段我不是很理解,我還是相信自己的實(shí)踐吧。)

一、問(wèn)題的提出

2019年十二月,我遇到了一個(gè)問(wèn)題。在我做一個(gè)android app的時(shí)候,我有A B C 三個(gè)界面,其中A為主界面,預(yù)設(shè)兩種情況:

①?gòu)腁跳轉(zhuǎn)(intent)到B 然后從 B跳轉(zhuǎn)到A。點(diǎn)擊返回鍵的結(jié)果是:A→B,也就是說(shuō)點(diǎn)擊“返回”又從主界面跳轉(zhuǎn)到B了,顯然這樣的用戶體驗(yàn)非常糟糕。②從A跳轉(zhuǎn)(intent)到B 然后從B跳轉(zhuǎn)到C。點(diǎn)擊返回的結(jié)果是:C→B→A,然而我要當(dāng)需求是“點(diǎn)擊返回,直接從C跳轉(zhuǎn)到A”。結(jié)果顯然,這不符合產(chǎn)品需求。為此,我用了finish()函數(shù)來(lái)解決這個(gè)問(wèn)題。效果舉例:在C中添加finish()之后,點(diǎn)擊“返回”,會(huì)直接回到主界面。這樣講可能很難理解,舉個(gè)例子吧:在主界面A 點(diǎn)擊“竹海明珠”進(jìn)入 界面B

Android Studio finish()方法的使用與解決app點(diǎn)擊“返回”(直接退出)Android Studio finish()方法的使用與解決app點(diǎn)擊“返回”(直接退出)

點(diǎn)擊左上角的自定義的back按鈕,會(huì)回到主界面。但是在主界面再次點(diǎn)擊 竹海明珠,又再次點(diǎn)擊手機(jī)系統(tǒng)自帶的返回按鈕后,界面再次回到主界面。這時(shí)候在主界面上,你點(diǎn)擊返回按鈕,不是退出APP回到桌面了,而是回到了竹海明珠界面。

二、activity多次回跳問(wèn)題的解決

為了解決這個(gè)問(wèn)題,可以在你跳轉(zhuǎn)界面的Intent中下面加一個(gè)finish函數(shù)。如:(1)先講一下**“問(wèn)題二**”我是在主界面中加了跳轉(zhuǎn)到“竹海明珠”的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(); } }); 這時(shí)候,在“竹海明珠“界面中點(diǎn)擊“返回(系統(tǒng)自帶)”按鈕的時(shí)候,APP不會(huì)再返回到主界面,而是會(huì)直接退出。

(2)顯然這不能解決activity多次回跳的問(wèn)題。那么利用finish()的原理——“它將返回到當(dāng)前Activity的發(fā)起者”,我們應(yīng)當(dāng)將finish()加在跳轉(zhuǎn)到左上角自定義的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();

這樣,它就會(huì)直接回到主界面了。于此同時(shí)問(wèn)題二也解決了,直接將問(wèn)題二中的finish()給注釋掉就好了,其它activity也是同樣的操作。

問(wèn)題產(chǎn)生的思路:為什么我會(huì)在“竹海明珠”以及同級(jí)別下的activity中加finish()呢?這是因?yàn)槲矣幸粋€(gè)Activity多次回跳的問(wèn)題沒(méi)有解決,同時(shí)還有一個(gè)問(wèn)題是,在我于主界面中點(diǎn)擊返回按鈕后,會(huì)直接退出app,這樣的用戶體驗(yàn)非常不好,為了保持體驗(yàn)的一致性,我索性將二級(jí)activity(竹海明珠、洪崖丹井等等)全部設(shè)置finish(),這樣的話,只要在二級(jí)及以上頁(yè)面中,只要點(diǎn)擊了返回按鈕就會(huì)直接退出APP,但用戶可以在我自定義的左上角的back按鈕返回activity界面。但,這舒適無(wú)奈之舉,這樣的用戶體驗(yàn)效果確實(shí)不好。。。

三、點(diǎn)擊返回按鈕不退出app

那么如何解決,點(diǎn)擊返回按鈕不直接退出app呢?設(shè)計(jì)思路1.點(diǎn)擊兩次返回按鈕才退出app2.點(diǎn)擊返回按鈕回到桌面但是不退出app,使app在后臺(tái)運(yùn)行

第一種:點(diǎn)擊兩次按鈕退出app

設(shè)計(jì):①重寫(xiě)onBackPressed方法onBackPressed() 捕獲后退鍵按鈕back的信息②currentTimeMills 返回毫秒級(jí)別的系統(tǒng)時(shí)間③放在oncreate方法下

private static final int TIME_EXIT=2000; private long mBackPressed; @Override public void onBackPressed(){ //onBackPressed() 捕獲后退鍵按鈕back的信息 if(mBackPressed+TIME_EXIT>System.currentTimeMillis()){ //currentTimeMillis,返回毫秒級(jí)別的系統(tǒng)時(shí)間 super.onBackPressed(); return; }else{ Toast.makeText(this,'再點(diǎn)擊一次返回退出程序', Toast.LENGTH_SHORT ).show(); mBackPressed=System.currentTimeMillis(); } }

第二種:?jiǎn)螕艋氐阶烂妫珹PP在后臺(tái)運(yùn)行

單擊回到桌面,app仍在后臺(tái)運(yùn)行 @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; } return super.onKeyDown(keyCode, event); }

總結(jié)

到此這篇關(guān)于Android Studio finish()方法的使用與解決app點(diǎn)擊“返回”(直接退出)的文章就介紹到這了,更多相關(guān)Android Studio finish()方法內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 中文字幕 在线观看 | 亚洲欧美另类在线观看 | 日韩精品在线免费观看视频 | 欧美亚洲免费 | 91麻豆久久久 | 日韩一级 | 国产91综合 | 国产精品av久久久久久毛片 | 青青草免费在线视频 | 久久精品国产一区二区三区不卡 | 成人在线电影网站 | 欧美一区二区三区久久精品视 | 日韩在线免费播放 | 国产高清视频在线 | 欧美激情精品久久久久久变态 | 成人不卡视频 | 精品综合| 精品日韩一区 | 麻豆av一区二区三区久久 | 国产中文在线观看 | 日本不卡在线观看 | 欧美视频在线观看 | 激情小说综合网 | 日韩欧美在线一区 | 亚洲精品久久久久久一区二区 | 超碰av免费 | 日韩一区二区三区在线 | 亚欧性视频 | 最新免费黄色网址 | 91成人午夜性a一级毛片 | 黄色一级片aaa| 日韩久草| 九九热久久免费视频 | 久久视频免费看 | 日本成人免费观看 | 一区中文字幕 | 国产99精品 | 人人种亚洲 | 亚洲一区 中文字幕 | 欧美成人a∨高清免费观看 91伊人 | 欧美1级 |