onSaveInstanceState呼叫時機
當某個Activity變得容易被系統銷燬時,該Activity的onSaveInstanceState函式就會被執行,除非該Activity是被使用者主動銷燬的,如當用戶按back鍵時。
意思是說,該Activity還沒又被銷燬,而僅僅是一種可能性,這種可能性有這麼幾種情況:
1.當用戶按下Home鍵時;
2.長按Home鍵,選擇執行其他的程式時;
3.按下電源鍵(關閉螢幕顯示)時;
4.從Activity A啟動一個新的Activity時;
5.螢幕方向切換時,如從橫屏切換到豎屏;
6.電話打入等情況發生時;
一句話概括就是,不是使用者主動退出某個Activity或者跳轉到其他Activity的情況下就會觸發onSaveInstanceState.換句話說,onSaveInstanceState()的呼叫遵循一個重要原則,即當系統存在“未經你許可”時銷燬了我們的Activity,則onSaveInstanceState()會被系統呼叫,這是系統的職責,因為它必須要提供一個機會讓使用者儲存資料。
————《Android設計模式解析與實戰 》 257
相關推薦
onSaveInstanceState呼叫時機
當某個Activity變得容易被系統銷燬時,該Activity的onSaveInstanceState函式就會被執行,除非該Activity是被使用者主動銷燬的,如當用戶按back鍵時。 意思是說,該Activity還沒又被銷燬,而僅僅是一種可能性,這種可能性有這麼幾種情況: 1.當用戶
ViewPager+ Fragment結合的setUserVisibleHint()呼叫時機
最近的專案使用到了ViewPager + Fragment的模式,要求在每次Fragment獲取顯示的時候來重新整理資料,該專案下ViewPager有5個子fragment,在onCreateView及fragment的setUserVisibleHint(bool is
關於Activity中onStop和onPause呼叫時機的各種誤解
原始碼 : https://github.com/w-g-b/ActivityReview 正確結果 假設當前的FirstActivity為A,要呼叫A的onPause方法而不呼叫onStop方法 1. 在AndroidManifest檔案中,將
前端框架Vue中methods,computed,watch的呼叫時機的理解
最近在學Vue框架的 時候對methods,computed不甚理解,看了幾篇別人寫的部落格感覺描述的也很模糊,故而在稍微明白他們之間主要差異的時候,寫篇部落格記錄分享一下。 methods中定義的函式,其呼叫時機是:當頁面引用了vue data關鍵字的屬性,並且這些屬性發
VS2008 外掛開發,各回調的呼叫時機
首次啟動: OnConnection::Extensibility.ext_ConnectMode.ext_cm_UISetup OnDisconnection::Extensibility.ext_DisconnectMode.ext_dm_UISetupComplete OnConnection::
CoInitialize 和 CoUninitialize 的呼叫時機問題
最近有個東西,需要讀 XML 配置檔案,於是用 msxml 做了。msxml 是基於 COM 的,使用之前需要 CoInitialize,使用之後需要 CoUninitialize。於是我寫成了: void foo(){ CoInitialize(NULL); // Reading
建構函式和複製建構函式的呼叫時機
關於建構函式和複製建構函式以及過載的複製操作何時會被呼叫,我做了一個小例子來進行測試。 #include <iostream> using namespace std; class
關於Shiro 的 doGetAuthenticationInfo與doGetAuthorizationInfo 呼叫時機
1.doGetAuthenticationInfo執行時機如下 當呼叫Subject currentUser = SecurityUtils.getSubject(); currentUser.login(token); 2.doGetAuthorizationInfo執行時機有三
onNewIntent呼叫時機
singleInstance: 第一次進入:onCreate onStart 在棧頂再次進入: onNewIntent 不在棧頂再次進入:onNewIntent onRestart onStart 按home鍵再次進入:onRestart onStart 按返回鍵:onResta
自定義控制元件View之onMeasure呼叫時機原始碼分析
先上測試程式碼:MainActivity.javaimport android.app.Activity; import android.os.Bundle; import android.util.Log; public class MainActivity extend
不同啟動模式下onActivityResult的呼叫時機問題
在ActivityA中用startActivityForResult啟動ActivityB時,根據ActivityB的不同啟動模式(standard、singleTop、singleTask、singleInstance)ActivityA中的onActivityResu
Onunload,onbeforeunload作用,呼叫時機
Onbeforeunload也是在Onunload,onbeforeunload或關閉時呼叫,Onbeforeunload是正要去伺服器讀取新的頁面時呼叫,此時還沒開始讀取;而onunload則已經從伺服器上讀到了需要載入的新的頁面,在即將替換掉當前頁面時呼叫。Onunload是無法阻止頁面的更新和關
c++中解構函式呼叫時機的研究
眾所周知,c++中的每個類都會有一個解構函式,當這個類的物件被銷燬的時候,物件會自動呼叫解構函式。那麼什麼情況下物件的解構函式會被自動呼叫呢?其實這個問題也可以換種方式問,什麼情況下物件會被自動銷燬。 我們跟據物件的宣告方式分兩種情況來講: 1、動態
setResult()的呼叫時機
今天遇到這樣一個問題,我在Activity-A中用startActivityForResult()方法啟動了Activity-B,並且在B中通過setResult()方法給A返回值,由於某些原因不能在setResult()之後立刻呼叫finish()函式,只能通過使用者按B
onNewIntent呼叫時機及Activity的四種啟動模式
singleInstance:第一次進入:onCreate onStart在棧頂再次進入: onNewIntent不在棧頂再次進入:onNewIntent onRestart onStart按home鍵再次進入:onRestart onStart按返回鍵:onRestart
Activity的onAttachedToWindow和onDetachedFromWindow呼叫時機原始碼解析
先上測試程式碼:MyView.java[java] view plain copy print?import android.content.Context; import android.util.AttributeSet; import android.util.Lo
onStop、onDestroy的呼叫時機
1、按返回按鍵,會先呼叫onDestroy,後呼叫onStop。 2、按home按鍵,會呼叫onStop,不會呼叫onDestroy。 3、按home按鍵,然後殺程序,有時候會呼叫onDestroy,有時候不會呼叫onDestroy。 4、按home按鍵,然後殺程序,
android 系統回撥onSizeChange, onMeasure, onLayout呼叫時機
最新專案中常用到上面三個系統回撥,所以就在想,這三個用的時機到底是怎麼樣的?今天做了實驗: <?xml version="1.0" encoding="utf-8"?> <com.lotus.measure.ReSizeLayout xmlns:a
關於Android事件分發中onInterceptTouchEvent呼叫時機
首先,當一個down事件來臨的時候,viewgroup的dispachTouchEvent中會清除所有的上一個手勢的狀態 // Handle an initial down. if (actionMasked == MotionEvent.ACTION_DOWN) {
Spring AOP在Bean生命週期中的呼叫時機
之前有寫了一個生命週期的例子,直接拿來用,在每個生命週期方法中呼叫print方法。見上一篇 加上AOP的程式碼 package com.aspect; import org.aspectj.lang.ProceedingJoinPoint; import org.a