原文連接:http://ltj150539.blog.163.com/blog/static/19360535620154995740630/android
使用Eclipse編譯Android程序時常常會遇到@SuppressLint或者@SuppressWarnings黃色警告,雖然不去處理程序依然可以運行,可是強迫症表示看着實在不舒服。實際上,解決這些問題每每會提升程序的安全性、可用性、性能等。canvas
一、@SuppressLint("DrawAllocation")安全
緣由:View及其子類的onDraw(Canvas canvas)方法會實時調用以更新界面,因此在onDraw(Canvas canvas)方法中實例化對象(好比Paint paint = new Paint())會影響效率。異步
解決辦法:將這些對象改成類的成員變量。ide
二、@SuppressWarnings("rawtypes")@SuppressWarnings({ "unchecked", "rawtypes" })性能
1 |
|
三、@SuppressLint("HandlerLeak")對象
緣由:Handler在Android中用於消息的發送與異步處理,經常在Activity中做爲一個匿名內部類來定義,此時Handler會隱式地持有一個外部類對象(一般是一個Activity)的引用。當Activity已經被用戶關閉時,因爲Handler持有Activity的引用形成Activity沒法被GC回收,這樣容易形成內存泄露。blog
正確的作法是將其定義成一個靜態內部類(此時不會持有外部類對象的引用),在構造方法中傳入Activity並對Activity對象增長一個弱引用,這樣Activity被用戶關閉以後,即使異步消息還未處理完畢,Activity也可以被GC回收,從而避免了內存泄露。
1 |
public static class MyHandler extends Handler { |
四、@SuppressLint("SimpleDateFormat")
1 |
|
五、@SuppressLint("DefaultLocale")
1 |
|