假設物件A內有兩個參數,分別是字串B和長整數C。
物件A生成兩個實體參數,分別是實體一和實體二......
可以將實體一和實體二的B和C都設為同樣的數值內容,但如果用if(實體一 == 實體二)來檢查結果...
在Java中一定會得到false。
除非逐一針對B和C參數比對,不然永遠都會是false,──但這不是重點!
只要善用這個特性,可以輕鬆地完成「資料是否有更新」的比對。
最近碰到一個功能,(我保留了細節,只講大概,)要在Activity A中用網路去查詢資料,查詢完後將資料在Activity B鐘用列表(ListView)顯示,並且用彈出式視窗告知使用者「現在有幾筆資料」,然後在Activity C中可以看各筆資料的詳細內容.......並且重新設定查詢條件後再次查詢、查詢完後退回「上一頁(也就是Activity B)」。
用彈出式視窗告知使用者「現在有幾筆資料」是後來追加的功能,所以我設計的簡單,就是在Activity B的onResume中把列表的資料數顯示出來就是...
但問題是在Activity C中,使用者大部分只是單純的看完細節就退回Activity B,並不會重新設定查詢。
所以「判斷是否有重新設定查詢」仍是有必要的一件事。
方法很簡單。
資料要能跨三個Activity間傳遞並操作,方法就是使用一個static型態的ArrayList參數。
(在同一個APP中只要這樣做即可,Intent是很多餘的東西。)
每次只要有「查詢」,就會將這個static ArrayList參數重新產生一個實體。
然後在Activity B中設置一個物件類別專屬的ArrayList參數三,並在onResume中做if(實體一 == 實體二)的檢查,就可以快速精準地知道「使用者是否重新使用過查詢功能」。
(怕有人不知道:通常,將static ArrayList設為實體一,可以省去檢查實體二是否為null的動作。)
但如果ListView的Adapter直接使用參數三,這個方法「可能」會導致APP當機。
怕有人不知道......
安全的程序應該是再產生ArrayList參數四,然後用addAll()的方式將參數三內的資料全部倒進參數四中,然後再使用參數四來產生ListView的Adapter。
(資料量不要太誇張...一般來說這個動作是不吃什麼效能的。如果資料量很誇張,擔心記憶體,不要擔心效能。)
物件A生成兩個實體參數,分別是實體一和實體二......
可以將實體一和實體二的B和C都設為同樣的數值內容,但如果用if(實體一 == 實體二)來檢查結果...
在Java中一定會得到false。
除非逐一針對B和C參數比對,不然永遠都會是false,──但這不是重點!
只要善用這個特性,可以輕鬆地完成「資料是否有更新」的比對。
最近碰到一個功能,(我保留了細節,只講大概,)要在Activity A中用網路去查詢資料,查詢完後將資料在Activity B鐘用列表(ListView)顯示,並且用彈出式視窗告知使用者「現在有幾筆資料」,然後在Activity C中可以看各筆資料的詳細內容.......並且重新設定查詢條件後再次查詢、查詢完後退回「上一頁(也就是Activity B)」。
用彈出式視窗告知使用者「現在有幾筆資料」是後來追加的功能,所以我設計的簡單,就是在Activity B的onResume中把列表的資料數顯示出來就是...
但問題是在Activity C中,使用者大部分只是單純的看完細節就退回Activity B,並不會重新設定查詢。
所以「判斷是否有重新設定查詢」仍是有必要的一件事。
方法很簡單。
資料要能跨三個Activity間傳遞並操作,方法就是使用一個static型態的ArrayList參數。
(在同一個APP中只要這樣做即可,Intent是很多餘的東西。)
每次只要有「查詢」,就會將這個static ArrayList參數重新產生一個實體。
然後在Activity B中設置一個物件類別專屬的ArrayList參數三,並在onResume中做if(實體一 == 實體二)的檢查,就可以快速精準地知道「使用者是否重新使用過查詢功能」。
(怕有人不知道:通常,將static ArrayList設為實體一,可以省去檢查實體二是否為null的動作。)
但如果ListView的Adapter直接使用參數三,這個方法「可能」會導致APP當機。
怕有人不知道......
安全的程序應該是再產生ArrayList參數四,然後用addAll()的方式將參數三內的資料全部倒進參數四中,然後再使用參數四來產生ListView的Adapter。
(資料量不要太誇張...一般來說這個動作是不吃什麼效能的。如果資料量很誇張,擔心記憶體,不要擔心效能。)
沒有留言:
張貼留言