Android按下home鍵後從新打開app進入主activity的問題

問題闡述:

  當咱們寫一款App的時候,勢必會有這種狀況:用戶已經進行了多級的操做,現返回棧中已存在多個activity,那麼這個時候咱們想回到最初的activity難道要一層層的返回嗎,對用戶來講 無疑是一個很差的操做體驗,這個時候咱們就想到了android的四大啓動模式,四大模式的詳情請自行查詢學習,singleTask就是四大啓動模式其中的一個,使用了singleTask模式的activity會在當前的返回棧中有且只有一個實例,當咱們須要從新調用這個activity 的時候,並非new 一個該activity,而是從返回棧中直接調用這個已存在的實例,並將之其上的全部activity清空,保持返回棧中有且僅有其一個activity實例。android

  那麼,說了這麼多,與本文有什麼關係呢?後端

  先來講一下 個人app需求:第一個activity爲登陸頁,登陸後保存用戶數據,進入主頁,除了修改密碼和退出登陸外其餘操做都應當自動登陸,實現用戶點擊app後 直接進入主頁的效果緩存

  最初,筆者也是以爲singleTask模式很是的方便,而且沒發現什麼缺點。but   把apk打包給後端小哥測試的時候,他發現當用戶點擊home鍵返回系統桌面的時候,這個時候從新點擊啓動app會發現,並無顯示關閉以前的那個activity,而是進入了登陸頁面。這是,筆者第一個想到的是 會不會本地緩存的用戶數據被清掉了,感受去檢查了一下,發現用戶數據還在。app

  那是什麼問題呢,以後又考慮到會不會是home鍵按下後,須要作一個home鍵的監聽攔截,可是這樣有些得不償失,由於攔截下來仍是得關掉全部的activity。學習

  死來想去,想一想數據也在,可是沒有自動登陸,會不會是查詢本地用戶緩存數據的方法沒有執行到呢?一番排查,發現只有第一次進入app的時候這個驗證本地數據的方法才被調用了,以後按下home鍵後再打開app並不會執行該方法,那麼就能解釋爲何 按下home鍵後在進入程序不會自動登陸到主頁,而是打開登陸頁了。測試

  但是,爲何沒有執行到呢?3d

解決方案:

  想了一下,驗證本地數據的方法我是在onCreate()方法中進行調用的,而singleTask啓動模式,調用已存在的activity實例倒是調用的onNewIntent()方法,那麼相對應的在onCreate()中調用的驗證本地用戶緩存數據的方法勢必要在onNewIntent()從新調用一下。果不其然,調整以後,問題解決了。(下面附上 自動登陸方法 和onCreate()、onNewIntent()的方法體 )blog

相關文章
相關標籤/搜索