2013年4月15日 星期一
2013年4月8日 星期一
[Android] 分析This Handler class should be static or leaks
好文章,留著筆記:http://www.beyondcompare.cn/this-handler-class-should-be-static-or-leaks.html
重點擷取以下:
Handler作为Activity的内部类有可能会导致内存泄露的问题。
Handler类应该应该为static类型,否则有可能造成泄露。在程序消息队列中排队的消息保持了对目标Handler类的引用。如果Handler是个内部类,那么它也会保持它所在的外部类的引用。为了避免泄露这个外部类,应该将Handler声明为static嵌套类,并且使用对外部类的弱应用。
重點擷取以下:
Handler作为Activity的内部类有可能会导致内存泄露的问题。
Handler类应该应该为static类型,否则有可能造成泄露。在程序消息队列中排队的消息保持了对目标Handler类的引用。如果Handler是个内部类,那么它也会保持它所在的外部类的引用。为了避免泄露这个外部类,应该将Handler声明为static嵌套类,并且使用对外部类的弱应用。
package cn.beyondcompare.statichandlerdemo; import java.lang.ref.WeakReference; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.app.Activity; public class MainActivity extends Activity { MyHandler handler = new MyHandler(this); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); test(); } static class MyHandler extends Handler { WeakReferencemActivity; MyHandler(MainActivity activity) { mActivity = new WeakReference (activity); } @Override public void handleMessage(Message msg) { MainActivity theActivity = (MainActivity) mActivity.get(); switch (msg.what) { case 0: theActivity.test1(); break; } } }; private void test() { handler.sendEmptyMessage(0); } private void test1() { } }
2013年3月28日 星期四
2013年3月27日 星期三
[Git][Gerrit] 移動版本庫;從git移到gerrit
1. Gerrit先開project
2. 可看到目前遠端版本庫僅有origin
$ git remote -v
3. 在Gerrit Project中新增一個遠端版本庫git1
$ git remote add git1 ssh://git@10.109.39.56/home/git/git1.git
4. 可看到目前遠端版本庫有origin跟git1
$ git remote -v
5. 將git1的資料fetch下來
$ git fetch git1
6. 可在branch中看到remote的git1
$ git branch -a
7. 切換到master,並將remote的git1 merge進來
$ git checkout master
$ git merge git1/master
8. 上傳
$ git push
8.1 若是要將A branch push到B branch
$ git push origin [branch_a]:[branch_b]
2013年3月25日 星期一
[Linux] 多檔案一次取代文件字元
find -iname "[file_name]" | xargs sed -i 's/[old_string]/[new_string]/g'
ex: find -iname "note.txt" | xargs sed -i 's/adb/def/g'
2013年3月20日 星期三
[Android] 使用需系統權限的APP的方法
需要系統權限的APP預設安裝進去device
是無法取得系統權限的
需取得系統權限有兩種方法
1. sign與image相同的platform key
$ java -Xmx2048m -jar linux-x86/framework/signapk.jar -w keys/platform.x509.pem keys/platform.pk8 [unsigned_app] [signed_app]
2. 將app push到/system/app底下,APP即可取得系統權限
$ adb root
$ adb remount
$ adb push [app_name] /system/app
ref1:[Android] 查看Android device key:app sign key
ref2:[Android] 修改system權限
--
2014/2/7 note
key在codebase的build/target/product/security中
是無法取得系統權限的
需取得系統權限有兩種方法
1. sign與image相同的platform key
$ java -Xmx2048m -jar linux-x86/framework/signapk.jar -w keys/platform.x509.pem keys/platform.pk8 [unsigned_app] [signed_app]
ref1:[Android] 查看Android device key:app sign key
ref2:[Android] 修改system權限
--
2014/2/7 note
key在codebase的build/target/product/security中
[Android] 修改system權限
/system的權限預設都為read only
若要修改權限,直接下chmod是無法改變權限的
需透過adb remount,將/system權限改為read. write
$ adb root
$ adb remount
=>補充:adb remount為重新將系統掛載為R/W模式
若要修改權限,直接下chmod是無法改變權限的
需透過adb remount,將/system權限改為read. write
$ adb root
$ adb remount
=>補充:adb remount為重新將系統掛載為R/W模式
2013年3月15日 星期五
[Engineer] 工程術語:EVT-DVT-PVT-MP
EVT : Engineering Verification Test (工程驗證測試階段)
一般這個階段所生產出來的樣品只有電路板,而且是那種很大一片的板子,我們通常稱之為【Big Board】,研發工程師通常會先把他想要驗證的想法或是無法決定的設計擺在這種板子上面。所以這種設計通常是硬體電路的工程驗證(verification)、除錯(debug)之用而已
DVT: Design Verification Test (設計驗證測試階段)
這個階段的機構外殼可能一開始只拿一塊大的樹脂用雷射雕刻所製作出來的樣品(mockup),或是用軟模具所生產出來的產品而已,目的是希望在模具發包真正生產前,用來驗證機構外殼的設計是否符合需求。
這個階段要驗證整機的功能,重點是把設計及製造的問題找出來,以確保所有的設計都符合規格,而且可以生產。
PVT: Production Verification Test (生產驗證測試階段)
這個階段的產品設計應該已經全部完成了,所有設計的驗證也必須告一段落。這個階段試產的目的是要做大量生產前的製造流程測試,所以必須要生產一定數量的產品,而且所有的生產程序都要符合製造廠的標準程序。
MP:Mass Production (導入量產階段)
refs: http://www.researchmfg.com/2010/07/evt-dvt-pvt/
一般這個階段所生產出來的樣品只有電路板,而且是那種很大一片的板子,我們通常稱之為【Big Board】,研發工程師通常會先把他想要驗證的想法或是無法決定的設計擺在這種板子上面。所以這種設計通常是硬體電路的工程驗證(verification)、除錯(debug)之用而已
DVT: Design Verification Test (設計驗證測試階段)
這個階段的機構外殼可能一開始只拿一塊大的樹脂用雷射雕刻所製作出來的樣品(mockup),或是用軟模具所生產出來的產品而已,目的是希望在模具發包真正生產前,用來驗證機構外殼的設計是否符合需求。
這個階段要驗證整機的功能,重點是把設計及製造的問題找出來,以確保所有的設計都符合規格,而且可以生產。
PVT: Production Verification Test (生產驗證測試階段)
這個階段的產品設計應該已經全部完成了,所有設計的驗證也必須告一段落。這個階段試產的目的是要做大量生產前的製造流程測試,所以必須要生產一定數量的產品,而且所有的生產程序都要符合製造廠的標準程序。
MP:Mass Production (導入量產階段)
refs: http://www.researchmfg.com/2010/07/evt-dvt-pvt/
[Git] 刪除Branch
1. 刪除local branch
$ git branch -d [branch_name]
2. 刪除local branch(強制)
當branch裡有commit,可能需要-D強制刪除branch
$ git branch -D [branch_name]
3. 刪除remote branch
$ git push origin :[branch_name]
$ git branch -d [branch_name]
2. 刪除local branch(強制)
當branch裡有commit,可能需要-D強制刪除branch
$ git branch -D [branch_name]
3. 刪除remote branch
$ git push origin :[branch_name]
訂閱:
文章 (Atom)