2011年4月28日 星期四

Android Debug certificate expired

砍掉debug.keystore
Mac OS: ~/.android/debug.keystore
Windows XP: C:\Documents and Settings\{USER_NAME}\.android\debug.keystore

2011年4月25日 星期一

2011年4月20日 星期三

Android Camera Bugs

最近寫了幾個要用到鏡頭的程式,發現問題真是他喵的多!

最近歸納出幾個結論:
  • 相機鏡頭所在的Activity,務必將Request Orientation設為landscape。
  • 有需要看起來是直的View,可用LayoutAnimation將View看起來轉為直的,只有看起來,因此在設計整個View的時候要特別想過。但是如果要將View作為直的就同時必須捨棄內建的元件(AlertDialog、Toast…等等),因為他們還是會顯示成landscape的樣子,所以就必須要自己刻。

Android APK For Download

將Content-Type設為application/vnd.android.package-archive

在Android手機上即可直接下載並且安裝

How To Stop Thread

boolean mFlag = true;

Thread thread = new Thread(new Runnable() {
    @Override
    public void run() {
        while(mFlag) {
            ...
            //Working
            ...
        }
    }
});
thread.start();

Than set mFlag to false somewhere.
如果在Android中,Thread沒辦法停掉,則會造成一個Memory Leak

2011年4月19日 星期二

Android Change Heap Size

http://anemospring.blogspot.com/2011/01/howto-android-dalvik-maximum-heap.html

Android Avoding Memory Problem

參考網址:http://ttlnews.blogspot.com/2010/01/attacking-memory-problems-on-android.html

要避免在Android上噴出Out Of Memory(OOM),大致上有幾點要注意:
  1. 有使用Listener的話,要拿掉。文中是寫在onDestroy時拿掉(大概是在onCreate掛上的),不過我通常在onResume掛上,所以onPause就拿掉了。總之就是把握一個原則:把你掛的Listener在相對應的Life Cycle拿掉。
  2. 使用Drawable必須注意,當被加到View上時,會幫你設上一個Callback,請注意必須自己去清掉。不然會造成一個Leak在那邊,你的可用的記憶體就會越來越少,最後就Jizz了。
  3. 使用圖片時,經常需要Decode成Bitmap,如果是一張稍微大過手機最小解析度(240x320參考),那就應該考慮用先用BitmapFactory.Options將inJustDecodeBounds設為true來先Decode一次偵測圖片大小,再設定inSampleSize 縮到適合大小,再去真的Decode整張圖片n。事實上手機的解析度很有限,你把一張大圖直接塞進去也是要縮小,浪費記憶體去存大圖又容易狂噴OOM Exception
  4. 使用ListView Adapter,將getView傳進的convertView重複利用,既能減少記憶體的用量,也不會每次new一個新的View減慢速度。
  5. 將大的物件在onDestroy時設為null,或許可以加快GC選到的機會,但是如果還有其他Thread在跑,則很容易出現NullPointerException,請小心使用。
  6. 使用不屬於需要長時間存在的Thread必須能夠在Activity停掉時跟著停掉,不然會造成整個Activity無法被GC回收。