No Magic Just Basic~程式設計心得筆記
2014年6月7日 星期六
[Android] 技術網站分享
最近發覺一個很好的android 3rd party網站http://android-arsenal.com/,
裡面提供很多目前受歡迎的第三方library可以讓開發者使用,大部分都附上github的source code,因此可以直接從別人撰寫的套件裡學習程式架構與風格,對於技術上的提升有頗大助益。
2014年5月1日 星期四
[Android]正確的Handler寫法,避免造成Memory Leak
在Andorid開發過程中,Handler是很頻繁使用的類別,主要任務在處理Sub Thread與UI Thread的溝通,因為在Thread裡是無法直接更新UI的資訊,必須透過sendMessage方式,把資訊塞進Message類別中傳送出來,接著在Handler的handleMessage function裡就會接收到,並作後續的動作。
一般我們比較常用以下這樣的寫法
一般我們比較常用以下這樣的寫法
private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { // ... } };
2014年2月15日 星期六
[Android] 讓ActionBar上的OverflowMenu always顯示出來
由於Android手機眾多,以前有實體的setting鍵,到最近的機種,大多把實體手機設定鍵移除了,因此ActionBar的OverflowMenu在有實體鍵的手機,預設會隱藏起來,由於工作上的需求希望可以不論是否有無實體按鍵都能夠顯示出來,找了一些資料,發覺可以使用下方的寫法,就可以解決此問題。
2013年2月2日 星期六
[Tool] 使用ccache可以加快build code的速度
在build android的source code,如果電腦硬體不夠好時,往往會build很久,google非常的貼心,針對此情況提供了ccache的機制可以減少編譯的時間,通常第一次clean build會花比較久時間,往後就會節省大約20%的時間,提升開發的效率。
●添加環境變數
●添加環境變數
export USE_CCACHE=1
●建立緩存的目錄export CCACHE_DIR=<path-to-your-cache-directory>
●設定緩存的空間prebuilts/misc/linux-x86/ccache/ccache -M 50G
2013年1月19日 星期六
[Android] RemoteView & AppWidget機制介紹
@ What is Widget
AppWidget framework通過broadcast intents和你的widget溝通,例如當需要更新Widget的時候。透過使用RemoteViews構建和發送。RemoteViews將Widget的layout和特定内容包裝後,藉由IPC傳送到Launcher,最後顯示到桌面上。
AppWidget framework通過broadcast intents和你的widget溝通,例如當需要更新Widget的時候。透過使用RemoteViews構建和發送。RemoteViews將Widget的layout和特定内容包裝後,藉由IPC傳送到Launcher,最後顯示到桌面上。
@ What is RemoteViews
RemoteViews並不是一個真正的View,而只是一個用於整合Widget裡layout呈現與view元件行為的一個Wrapper class(也就是appWidget所要長得樣子),透過RemoteView把建立該Widget需要的resource ID和各個元件的事件封裝起來。 RemoteViews會通過進程間通信機制傳遞給AppWidgetHost。
2013年1月5日 星期六
[Tool] Tmux(在家工作的好工具)
工作上有時需要假日連回公司,sync最新的code base或是build code的動作,可以節省隔天上班時等build code的時間,一開始都是直接用pietty或是ssh連回去,缺點就是當在build code時,家裡電腦上的console視窗不能關閉,這樣就中斷build code的工作了,所以就找尋看看有沒有可以關閉後還能夠繼續工作的tool。
2012年12月1日 星期六
[C++] A *a 和 A *aa = new A 的差別
在寫C++過程中,指標的使用與操作是最頻繁被使用的,有些難解的bug,通常point佔絕大多數,這裡複習一個很基本的概念。
如下面的例子,個別使用兩個a指標,也各自呼叫他們的member function test(),發覺都可以印出test的字串,但為什麼第一個指標明明是指向undefine的空間,為什麼不會出現問題呢,不是應該要出現Segmentation Fault嗎?
這裡隱藏一個很重要,也很容易被誤解的觀念,通常使用null point或不知指向何處的point時,操作member function是不會發生Segmentation Fault的,會產生Segmentation Fault是在操作它的member時,如果下面的程式碼多加上一段a->value的話,當程式運行到這一行就會發生crash了。
如下面的例子,個別使用兩個a指標,也各自呼叫他們的member function test(),發覺都可以印出test的字串,但為什麼第一個指標明明是指向undefine的空間,為什麼不會出現問題呢,不是應該要出現Segmentation Fault嗎?
這裡隱藏一個很重要,也很容易被誤解的觀念,通常使用null point或不知指向何處的point時,操作member function是不會發生Segmentation Fault的,會產生Segmentation Fault是在操作它的member時,如果下面的程式碼多加上一段a->value的話,當程式運行到這一行就會發生crash了。
訂閱:
文章
(
Atom
)