1. 程式人生 > >APP之紅點提醒三個階段

APP之紅點提醒三個階段

istview images 用戶 擴展 cimage art str alt gin

下面這個頁面就是我們進入APP後的主界面。客戶選項的紅點上數字就是顯示我們沒有查看的客戶總數量。

技術分享


當我們切換到客戶這個fragment時,會顯示貸款客戶數量與保險客戶數量。

技術分享


當我們隨便點擊入一個選項,假如進入到保險客戶的這個activity裏面,ListView顯示用戶的信息,上面標記紅點,代表沒有沒有查看的客戶,沒有紅點的代表已經查看過的客戶數量。

技術分享

當我們點擊一個有紅點的客戶信息的時候,需要向後端發送信息,代表我已經查看了這條信息。並且改變在主Activity的數量,和frament中的數量。如下圖:

技術分享


那麽這個功能怎麽實現以及怎麽優化,我在實現這個功能的時候,經歷的三個階段。
第一種階段:
思路:利用SharedPrefrence,和廣播。
具體實現:當我們進入主Activity的時候,從後臺讀取數據得到客戶總數量,保險客戶總數量,貸款客戶總數量,並把它存儲到sharedPrefrence裏面。再將主Activity讀取SharedPrefrence客戶總數量並顯現出來。
當我們切換到frament的時候,從SharedPrefrence依次讀取貸款和保險用戶的數量,並且把它呈現出來。
當我們點擊帶有ListView中帶有紅點item的時候,改變SharedPrefrence中的客戶數量和保險客戶的數量,發送廣播,通知改變。主Activity和fragment再從SharedPrefrence中對數據讀取一次,然後發生改變。

我們發現,這個過程中所有操作都要使用到SharedPrefrence,而且代碼全部寫在各種Activity中,顯得代碼臃腫,代碼沒有復用性,沒有邏輯。於是演化了第二種思路。

第二種階段
思路:利用靜態的數據擁有與應用的同樣的生命周期,舍棄了SharedPrefrence。
具體實現:創建一個類,在類中設定3個靜態整型,分別為客戶總數量,保險客戶數量,貸款客戶數量。在這個類中分別寫入三個方法。分別為根據客戶數量判斷紅點方法,根據保險客戶數量紅點方法,根據貸款客戶數量紅點方法。
當我們進入主Activity的時候,將得到的數據分別存入3個靜態數量。然後在主Activity中調用根據客戶數量判斷紅點。
當我們進入fragment的時候,分別調用根據保險客戶數量紅點方法,根據貸款客戶數量紅點方法。判斷保險客戶和貸款客戶紅點顯示的情況。
當我們點擊ListView上顯示有紅點的item的時候,改變靜態的客戶總數量,保險客戶數量,貸款客戶數量。發送廣播給主Activity和Fragment。然後在主Activity調用根據客戶數量判斷紅點的方法;在fragment中調用根據貸款數量判斷紅點方法或根據保險客戶數量判斷紅點方法。
第二種思路提高的代碼的復用,並且利用的一個中心類控制所有操作,舍棄了對SharadPrefrence的頻繁使用,根據我的測試,還能提高紅點顯示的速度。

第三種階段
思路:不要廣播,利用fragment的生命的周期和Activity的生命周期。
具體實現:
在第二種思路上擴展,繼續使用一個中心類控制所有操作。
當我們點擊ListView中的帶有紅點item的時候。只改變相應紅點的數量,而不發送廣播。而是在fragment使用在onCreatView()方法和Activity中onResume()方法中調用判斷紅點顯示情況的方法。
我們知道,當我們從fragment的跳轉時,會執行Fragmeng中的onDestroyView()方法,切換回fragment的時候,會執行onCreatView()方法。
跳轉Activity的時候會執行onStop()方法,跳回的時候會執行onResume()方法。
第三種思路徹底利用生命周期,舍棄了廣播的使用和簡化的代碼。

在整過過程的我們發現,一個好的思路是在你做項目的過程中慢慢得出來的,不是我們一步得到的。我們首先要用自己最能想到的方法實現這個功能再說,在這個基礎之上,在對代碼進行優化尤其在開發實際項目是,速度第一,性能第二。最好的策略就是快速完成項目,然後快速叠代,優化性能和代碼。

APP之紅點提醒三個階段