Log 和 Toast 都很常被用來印出資訊,本篇會比較兩個物件的使用差異,分別介紹適合的情境。
用於印出 Log,並可在 Logcat 工具中觀察。
Log 有不同等級 Assert、Error、Warning、Info、Debug、Verbose,我們可以依重要程度使用相應等級的 Log。等級是我們用來篩選 Log 的重要依據之一,隨意使用可能會造成後續維護的困擾。
你用過這個嗎?
Log.wtf(String tag, String msg)
wtf
絕對不是你想的那個 WTF,官方說明是 What a Terrible Failure,用來表示不可能發生的狀況,會印出 Assert 等級的 Log。
Toast 是在螢幕下半部,一個可以顯示資訊的小小 View。通常用來在盡量不影響使用者的操作下,通知某些狀態或訊息。雖然在使用者體驗方面,官方已經不那麼推薦 Toast,但這不妨礙我們拿它來 debug!
官方:
如果您的應用程式位於前景,請考慮使用 snackbar 而不要使用浮動式訊息。Snackbar 包含使用者可操作的選項,可為應用程式提供更優質的使用體驗。
如果應用程式在背景執行,而您希望使用者採取某些動作,請改為傳送通知。
功能/特性 | Log | Toast |
---|---|---|
Context 需求 | 不需要 Context,任何地方皆可使用 | 需要 Context,僅能在有 Context 的地方使用 |
執行緒要求 | 可在任何執行緒中使用 | 必須在主執行緒(UI 執行緒)中使用 |
主要用途 | 記錄日誌供開發者除錯 | 向使用者顯示短暫的通知或操作結果 |
輸出位置 | 在 Logcat 中查看,需要開發環境支持 | 直接在手機螢幕上顯示,使用者(包括非工程師)可以直接看到 |
顯示效果 | 不影響使用者介面 | 會在螢幕上短暫顯示,可能干擾使用者操作 |
有些資訊其實對於整個系統的運作很重要,但不一定會顯示在 UI 上(例如,訊息id)。有時候,後端或QA的夥伴在比對資料時需要這些資訊,那我就會考慮用 Toast 的方式將這些資訊印出來。
前面是在前端的案例,接下來舉個適合使用 Log 的案例。若是在底層打 API 的部分,想要加個 Timmer 自行控制 Timeout 時間。因為不是在 UI 執行緒,那麼印出當前秒數的功能就比較適用 Log。