當前位置:首頁 » 安卓系統 » android狀態保存

android狀態保存

發布時間: 2022-10-22 23:36:31

1. Android開發中 Activity中數據、狀態的保存

1.若是向資料庫中插入數據,保存持久化數據的操作時應放在onpause()中.
protected
void
onpause(){…..
}
2.若保存ui控制項的狀態,
成員變數的值等應放在onsaveinstancestate()中
protected
void
onsaveinstancestate(bundle
outstate)
{....
}

2. android:如何對ImageButton狀態進行保存

因為你推出之後再進就會重新初始化該類,所以flag的初值又從false開始,所以你如果想要保留上一次設定的flag值,就需要將它存放在某個文件里,可以將flag的值存放到SharedPreference裡面哦

3. Android程序如何保存狀態

在onSaveInstanceState()的bundle中存入你需要保存的值。
下次重啟頁面的時候可以在onCreate()和onRestoreInstanceState()的bundle中獲得你存儲的值來重新初始化你應用的狀態。

4. android中,怎麼保存ListView中checkbox的狀態

我現在也是這么做的,不知道還有沒好的方法。就是在public
void
onItemClick(AdapterView<?>
parent,
View
view,
int
position,long
id)這個方法里邊保存每個Item的狀態(例如:保存在一個map中)在自定義的Adapter中的public
View
getView(int
position,
View
convertView,
ViewGroup
parent)中判斷view
的狀態(判斷position是否在保存的map中)我是這么做的

5. Android中ListView中按鈕狀態的保存

每一個item都有自己的id和position,這都是唯一的。所以你可以用這個item的position作為key值,按下去的狀態保存在這個key對應的value中。
SharedPreferences 來保存key-value值,每次重新打開都從這里取狀態值賦給button

6. android 中怎麼保存當前按鈕的狀態就是退出後重新進入還是上一次離開的狀態

可以把按鈕的狀態存在SharedPreferences里 每次onresume的時候去讀取一次狀態。
相應的 每次點擊都要把當前的狀態存進去

7. 安卓√一些資源及狀態的保存工作放在

我也覺得樓主是對的,因為從star->creat->resume,然後再是用戶在頁面的操作,若要保存用戶操作後的數據的話,就得等用戶打開其他activity時,再來保存之前activity里的東西,so,選A。
這樣可以么?

8. Android開發中 Activity中數據、狀態的保存

首先指出你這里的一個錯誤,你定義的是一個List<String>,看你的用法,你不是很清楚List和HashMap之間的區別,List是個有序集合,添加的時候不是用put,是用add;HashMap是個無需的鍵值對存儲,添加的時候用put。

另外,保存數組集合有N種方法,你可以單例一個application,就像一個實體類一樣,裡面存放你需要的任意變數(數組,集合),實現get和set方法,這樣的變數,你是可以再任何activity裡面去調用、賦值的;也可以定義一個靜態集合,來實現數組內容保存;還有其他本地的SharedPreference、file、SD卡等就不說了,都是可以實現的。
那麼就說你的這個問題,最簡單的方法就是在全局的Application中定義一個集合,保存你的數據內容,在activity1的onResume去判斷ListView 的adapter裡面是否還有數據顯示,沒有就讀取出來顯示。還有一點我很奇怪,為什麼一個ListView點擊Item跳轉,回來後會數據全沒了?這個如果你中間沒有其他操作是不應該有這種現象的。

9. Android Activity啟動模式與狀態保存及恢復詳解

       Activity是 Android組件 中最基本也是最為常見用的四大組件(Activity,Service服務,Content Provider內容提供者,BroadcastReceiver廣播接收器)之一 。
       Activity是一個應用程序 組件 ,提供一個 屏幕 ,用戶可以用來交互為了完成某項任務。
       Activity中所有操作都與用戶密切相關,是一個負責與 用戶交互 的組件,可以通過setContentView(View)來 顯示指定控制項
       在一個android應用中,一個Activity通常就是一個單獨的屏幕,它上面可以顯示一些控制項也可以監聽並處理用戶的事件做出響應。Activity之間通過Intent進行通信。
       關於Activity啟動流程請參考之前的文章 Android activity啟動流程分析

       activity有四種啟動模式,分別為standard,singleTop,singleTask,singleInstance。如果要使用這四種啟動模式,必須在manifest文件中<activity>標簽中的launchMode屬性中配置。

       標準的默認啟動模式,這種模式下activity可以被多次實例化,即在一個task中可以存在多個activity,每一個activity會處理一個intent對象,(在A中再次啟動A,會存在後面的A在前面的A上面,當前task會存在兩個activity的實例對象)

       如果一個singleTop模式啟動的activity實例已經存在於棧頂,那麼再次啟動這個activity的時候,不會重新創建實例,而是重用位於棧頂的那個實例,並且會調用實例的onNewIntent()方法將Intent對象傳遞到這個實例中,如果實例不位於棧頂,會創建新的實例。

       啟動模式設置為singleTask,framework在啟動該activity時只會把它標示為可在一個新任務中啟動,至於是否在一個新任務中啟動,還要受其他條件的限制,即taskAffinity屬性。
        taskAffinity :默認情況下,一個應用中的所有activity具有相同的taskAffinity,即應用程序的包名。我們可以通過設置不同的taskAffinity屬性給應用中的activity分組,也可以把不同的應用中的activity的taskAffinity設置成相同的值,當兩個不同應用中的activity設置成相同的taskAffinity時,則兩個activity會屬於同一個TaskRecord。
       在啟動一個singleTask的Activity實例時,如果系統中已經存在這樣一個實例,就會將這個實例調度到任務棧的棧頂,並清除它當前所在任務中位於它上面的所有的activity;如果這個已存在的任務中不存在一個要啟動的Activity的實例,則在這個任務的頂端啟動一個實例;若這個任務不存在,則會啟動一個新的任務,在這個新的任務中啟動這個singleTask模式的Activity的一個實例。

       以singleInstance模式啟動的Activity具有全局唯一性,即整個系統中只會存在一個這樣的實例,如果在啟動這樣的Activiyt時,已經存在了一個實例,那麼會把它所在的任務調度到前台,重用這個實例。
       以singleInstance模式啟動的Activity具有獨占性,即它會獨自佔用一個任務,被他開啟的任何activity都會運行在其他任務中(官方文檔上的描述為,singleInstance模式的Activity不允許其他Activity和它共存在一個任務中)。
       被singleInstance模式的Activity開啟的其他activity,能夠開啟一個新任務,但不一定開啟新的任務,也可能在已有的一個任務中開啟,受條件的限制,這個條件是:當前系統中是不是已經有了一個activity B的taskAffinity屬性指定的任務。

       涉及到Activity啟動,就不得不說一下Activity的管理,Activity是以什麼方式及被什麼類來進行管理的,涉及的類主要如下:

       歷史棧中的一個條目,代表一個activity。ActivityRecord中的成員變數task表示其所在的TaskRecord,ActivityRecord與TaskRecord建立了聯系。

       內部維護一個 ArrayList<ActivityRecord> 用來保存ActivityRecord,TaskRecord中的mStack表示其所在的ActivityStack,TaskRecord與ActivityStack建立了聯系。

       內部維護了一個 ArrayList<TaskRecord> ,用來管理TaskRecord,ActivityStack中持有ActivityStackSupervisor對象,由ActivityStackSupervisor創建。

       負責所有ActivityStack的管理。內部管理了mHomeStack、mFocusedStack和mLastFocusedStack三個Activity棧。其中,mHomeStack管理的是Launcher相關的Activity棧;mFocusedStack管理的是當前顯示在前台Activity的Activity棧;mLastFocusedStack管理的是上一次顯示在前台Activity的Activity棧。

       ActivityThread 運行在UI線程(主線程),App的真正入口。

       用來實現AMS和ActivityThread之間的交互。

       負責調用Activity和Application生命周期。

       當一個Activity未被主動關閉,即「被動關閉」時,可能需要系統給用戶提供保持一些狀態的入口。

       前面說的入口就是:Activity提供了onSaveInstanceState()方法,該方法是Activity在關閉前保存狀態的核心方法。

       前面提到「被動關閉」,如果是主動關閉那麼就不會調用,比如:按back鍵、調用finish()等,那麼"被動關閉"的場景有哪些呢?下面給列舉一下:

       肯定在調用onStop()前被調用,但不保證在onPause()前 / 後,一般是在onPause()後調用。

       當需要保持狀態時,在onSaveInstanceState()內執行以下邏輯:

       當需要恢復時,在onCreate()內部執行以下邏輯:

       布局每個View默認實現:onSaveInstanceState(),即UI的任何改變都會自動的存儲和在activity重新創建的時候自動的恢復(只有在為該UI提供了唯一ID後才起作用);
       若需復寫該方法從而存儲額外的狀態信息時,應先調用父類的onSaveInstanceState()(因為默認的onSaveInstanceState()幫助UI存儲它的狀態);
       只使用該方法記錄Activity的瞬間狀態(UI的狀態),而不是去存儲持久化數據,因為onSaveInstanceState()調用時機不確定性;可使用 onPause()[一定會執行]存儲持久化數據;

       Activity提供了onRestoreInstanceState()方法,該方法是Activity在重新創建後恢復之前保存狀態的核心方法。

       若被動關閉了Activity,即調用了onSaveInstanceState(),那麼下次啟動時會調用onRestoreInstanceState()。

       onCreate()--->onStart()--->onRestoreInstanceState()--->onResume()

        注意: onSaveInstanceState()、onRestoreInstanceState()不一定 成對被調用
       如:當正在顯示Activity A時,用戶按下HOME鍵回到主界面,然後用戶緊接著又返回到Activity A,此時Activity A一般不會因為內存的原因被系統銷毀,故Activity A的onRestoreInstanceState()不會被執行;
       針對以上情況,onSaveInstanceState保持的參數可以選擇在onCreate()內部進行解析使用,因為onSaveInstanceState的bundle參數會傳遞到onCreate方法中,可選擇在onCreate()中做數據還原。
        至此:Activity的啟動模式及Activity的狀態保持及恢復介紹完畢。

10. android的Fragment切換時如何保存狀態

transaction.replace返回之後。重新創建。想保存數據以便重新創建,最好把要保存的數據放入到onSaveInstanceState方法里去,這個是重載fragment的方法。這個不僅適用於返回重建屏幕,也適用於屏幕旋轉重建屏幕。
transaction.add返回之後,原來的fragment原封不動。

熱點內容
文件夾目錄鏈接 發布:2025-01-31 08:24:22 瀏覽:948
ftpdos命令上傳 發布:2025-01-31 08:14:44 瀏覽:105
intenumjava 發布:2025-01-31 08:14:37 瀏覽:802
android3x 發布:2025-01-31 08:13:03 瀏覽:600
如何購買安卓版live2d 發布:2025-01-31 08:13:01 瀏覽:279
python交互輸入 發布:2025-01-31 08:12:53 瀏覽:427
requestdatapython 發布:2025-01-31 08:02:01 瀏覽:44
javades加密工具 發布:2025-01-31 07:54:04 瀏覽:244
電話如何配置ip 發布:2025-01-31 07:48:48 瀏覽:300
2021賓士e300l哪個配置性價比高 發布:2025-01-31 07:47:14 瀏覽:656