亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

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

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

在這里,我們將用到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

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

點擊左上角的自定義的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呢?設計思路1.點擊兩次返回按鈕才退出app2.點擊返回按鈕回到桌面但是不退出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,返回毫秒級別的系統時間 super.onBackPressed(); 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; } return super.onKeyDown(keyCode, event); }

總結

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

標簽: Android
相關文章:
主站蜘蛛池模板: 国产日韩欧美一区二区三区在线 | 久久99精品久久久久久国产越南 | 成人午夜精品视频在线观看 | 久久dvd | 婷婷久久综合九色综合98 | 午夜宅男宅女的免费网站 | 久草资源在线播放 | 国产日韩欧美亚洲综合 | 日本老妇人乱视频 | 亚洲草逼| 真人一级毛片免费完整视 | 中文字幕亚洲欧美 | 国产三级在线免费观看 | 爱爱男女在线观看视频高清 | 91精品视频在线看 | 9191国语精品高清在线最新 | 一级不卡毛片免费 | 台湾一级毛片免费播放 | 国产在线播放免费 | 亚洲黄网在线 | 妹子草网| 欧美日韩小视频 | 在线免费观看精品 | 海外毛片| 日韩黄色大片免费看 | 国产1024在线永久免费观看 | 日韩在线视频一区 | 久久婷婷色一区二区三区 | 看免费一级毛片 | 国产呦精品一区二区三区网站 | 欧美日韩在线一区二区三区 | 99国产精品欧美久久久久久影院 | 女人被男人狂躁下面在线观看 | 亚洲自偷自偷精品 | 国产片在线 | 三级黄色一级视频 | 中国大陆一级毛片 免费 | 亚洲六月丁香婷婷综合 | 免费国产成人综合 | 12306播播影院午夜片在线观看 | 黄在线视频 |