Fragment使用容易忽視的問題

2021-07-11 19:41:34 字數 1008 閱讀 6602

這兩天在開發過程中遇到乙個網路訪問時的問題,

問題是這樣的:

我的乙個fragmentactivity中載入了幾個fragment,每個fragment中的onresume方法中都進行了網路請求,當然,我的網路工具使用了單例模式,在每個fragment中實現了網路工具的監聽介面,這時候我從這個activity跳轉到另乙個activity後又回到這個activity時,資料進行了重新整理,可是卻沒有達到我想要的效果。。。。。。。

分析

想呀想呀。。。。。。還是不知道問題出在**。。。**看了又看。。。還是沒找到結果,最後除錯一看,發現fragment中的網路請求根本沒有監聽到,後面仔細一想,這是因為有多個fragment先後給網路工具設定了監聽介面的原因啊(單例模式),當activity 從不可見到可見時執行了onresume()方法,這時每乙個fragment也都執行了各自的onresume,網路工具的監聽就被進行了幾次設定,從而沒有達到我們想要的效果。。。

解決

這下可怎麼是好啊,。。。。。想啊想。。。想到了下面幾個辦法:

1.每個fragment中自己new 網路工具。。。。。(可以是可以,但顯得浪費了很多資源)

2.讓fragment中的onresume中的網路請求在fragment可見的時候執行。。。。(哈哈哈,問題解決了)

我採用了第二種辦法。。。。

今天突然看到之前遇到的乙個問題,記錄下來

並且新增hide(),add(),方法之後,需要commit(),來實現兩個fragment跳轉的時候,這種情形下引數需要進行系統儲存,但是這個時候你已經實現了跳轉,系統引數卻沒有儲存。此時就會報異常。

分析原因:你並不需要系統儲存的引數,只要你自己設定的引數能夠傳遞過去,在另外乙個fragment裡能夠順利接受就行了,現在android裡提供了另外一種形式的提交方式commitallowingstateloss(),從名字上就能看出,這種提交是允許狀態值丟失的。到此問題得到完美解決,值的傳遞是你自己控制的。

Linux C 容易忽視的錯誤

在使用pthread attr setstacksize函式時發現公司的專案全部設定錯誤,且全部沒有檢查返回值,這樣導致了建立執行緒時棧大小設定失敗,系統使用預設的棧大小來進行建立執行緒。手冊中明確指出,當設定的棧小於16k時,pthread attr setstacksize函式可以返回einva...

容易被忽視的synchronized

public static final synchronized callmanager getinstance return minstance synchronized,多執行緒訪問同步鎖,具有以下特性 1 同一時間只允許乙個執行緒訪問 2 在乙個執行緒訪問synchronized 塊時,另乙個...

ES容易忽視的集群配置

一 前言 目前生產系統由solr轉es了,在這邊就記錄下在使用過程中容易忽視的配置吧,其實我也是才用,如果有什麼錯誤的地方,多指正。二 配置 1 es的段合併是限速設定 預設是20mb s 如果是ssd磁碟建議增大 put cluster settings 如果臨時匯入資料先可以不要合併,再開啟的時...