Profile cover photo
Profile photo
梁瑋哲
About
瑋哲's posts

Post has attachment
Android 開發 (120) DiffUtil
前陣子android 發佈了新版的support lib 24.2.0,稍微看了一下,發現有個非常實用的新class DiffUtil  先說說它的功用吧,還記得 mAdapter.notifyItemChanged(); mAdapter.notifyItemInserted(); mAdapter.notifyItemRemoved(); 這些可以上我們展現出加入移除或ui更動時的動畫,但是... 利用這種做法,我常常會不小心遺漏掉某些item 忘了notifychange 造成crash, 現在goog...

Post has attachment
Android 開發(119) cucumber
cucumber 什麼是 cucumber ?  cucumber 是一種BDD的工具 使用它有什麼好處?   我們可以看到邏輯 看了上面的code我相信沒有人看得懂在寫什麼 但是看了下面的code我相信每個人都知道我想表達什麼 使用cucumber我們可以將上面的code 轉化成下面單純的幾個步驟, 當然裡面實作的code還是避不掉,但是我們可以將測項,轉化成幾個簡單的字 減低維護的成本,增加可讀性 那使用cucumber有什麼好處了 首先它提供了很醜的介面XD , 不過勉強可以看, 還有一個好處是他可以將...

Post has attachment
[經驗分享] 如何避免搶資源?
先講實例:今天有多個任務需要執行,我們希望做個service能夠取得必須執行的任務 以上是架構圖,有多個client,當client有空的時候,就發送request 跟server 要資料, 這個架構看起來很美好,但是實際執行會發現,client常常會拿到同一個任務 why? 因為當多個client 同時執行時,DB的資料會在還沒被改動前就會被讀取數次, 那我們要怎麼避免這件事情發生? ans: 讓DB只能被一個client存取 所以我修改了設計 可以注意到,原本單純server的地方被改成queue,也就是...

Post has attachment
Android 開發(118) FAB material design with viewpager
根據material design 的 best practice 要求如果在每個頁面的icon不同, 必須出現animation的動作如下 這是很合理的行為 但是.... google 的sample 卻沒有教我們怎麼實做這個方法 今天花了一點時間研究了一下該如何實作出這樣的效果(以現有api,而不去使用自幹animation的方法) 其實就是在viewpager 的 onPageSelected的時候 直接call fab.hide() 然後在fab 消失的時(onHidden被call的時候)再將新的圖...

Post has attachment
Android 開發(117) what's new in N - java8 - Default and static interface methods
Android N 支援了java8部份的語法,今天要介紹的是 Default and static interface methods, 熟悉interface的大家應該都知道interface 只能定義"行為"不像是abstract class 除了定義行為之外還可以實作相關的內容,舉個最簡單的例子 這是我們熟悉的interface 只能定義"行為" 這是我們熟悉的abstract class 可以定義相關實作內容 不過這件事情在java8出現了改變 在java8 你可以針對interface 定義預設的...

Post has attachment
Android 開發(116) what's new in N - resizeable activity
Android N 在最近這幾天出了preview版,身為一個android 開發人員當然要嘗鮮一下 今天要介紹的是 resizeableActivity 大家先看一下圖 簡單的說就是可以在一個頁面下開兩個activity ,你只需要長按就可以將有支援的activity 放在另一個視窗 今天就要來說明我們該如何實作 首先你必須將 gradle 升級到N 外加N的模擬器or 手機 接著你必須將gradle的設定先升到N preview的版本 注意 compilesdk, buildTool, minsdk, t...

Post has attachment
Android 開發(115) new Design lib bottomSheet
最新發佈的support library 23.2.0 多了一個新的ui bottomSheet 算是一種蓋半頁的ui,常常可以在電商的app裡看到類似的用法 以前要做這種ui真的是要自己想辦法處理,現在google提供了新的方案 讓我們可以輕鬆做到這個功能 接下來讓我們看看這個lib 實際運作的樣子 要怎麼做到? 方法其實很簡單 只要在想要使用bottomsheet的 layout 上面加上 app:layout_behavior="android.support.design.widget.BottomS...

Post has attachment
Android 開發 (114) retrofit with rxjava = callback hell?
最近有機會研究了一下retrofit + rxjava ,使用起來真的很方便 不過實際套用到project裡之後,發現了一些可怕的東西 首先我們先看一下下面這段code 我在某個頁面必須發送兩個api,而第二隻api 必須根據前一隻api的結果從相對應的動作, 這樣看起來似乎還好,還算看得懂,雖然中間的if else 有點看不出來是哪隻api的 但是當有三隻四隻五隻互相相依的api那會變怎樣? 上面的程式碼還沒有加上if else 還有一些邏輯.... 我相信大部分的人看到這樣的程式碼加上一堆if else ...

Post has attachment
Android 開發 (113) Best Practices for Unique Identifiers
最近在逛android developer的時候,無意間發現了這個頁面 http://developer.android.com/intl/zh-tw/training/articles/user-data-ids.html 裡面說明了各種用來辨識user的情境,以及可以用什麼資料來判斷才是正確的解法, 舉例來說,以前我們總是利用 //Returns the unique device ID, for example, the IMEI for GSM and the MEID or ESN for CDMA...

Post has attachment
Android 開發 (112) Cloud Test Lab
相信有在做測試的大家常常會遇到一個問題,測試跑在自己的機台上,好花時間而且我的機台又不夠多,更不用說android 4.4 5.0 6.0 版本的問題了 現在google 提供了一個solution,你只需要上傳你的測試apk 點選你想要的device 和version,然後按下測試,接著去泡杯咖啡,之後report就會自動產生出來囉!! 先看一下該如何設定 首先必須先將 android studio 升級到1.3+以上 接著前往test case 設定的地方,點選Target 到 Cloud Test La...
Wait while more posts are being loaded