Archive for 七月, 2009

ActivityUnitTestCase & ActivityInstrumentationTestCase2

ActivityUnitTestCase

Class Overview

This class provides isolated testing of a single activity. The activity under test will be created with minimal connection to the system infrastructure, and you can inject mocked or wrappered versions of many of Activity’s dependencies. Most of the work is handled automatically here by setUp() and tearDown().

If you prefer a functional test, see ActivityInstrumentationTestCase.

It must be noted that, as a true unit test, your Activity will not be running in the normal system and will not participate in the normal interactions with other Activities. The following methods should not be called in this configuration – most of them will throw exceptions:

The following methods may be called but will not do anything. For test purposes, you can use the methods getStartedActivityIntent() and getStartedActivityRequest() to inspect the parameters that they were called with.

The following methods may be called but will not do anything. For test purposes, you can use the methods isFinishCalled() and getFinishedActivityRequest() to inspect the parameters that they were called with.

ActivityInstrumentationTestCase2

Class Overview

This class provides functional testing of a single activity. The activity under test will be created using the system infrastructure (by calling InstrumentationTestCase.launchActivity()) and you will then be able to manipulate your Activity directly.

Other options supported by this test case include:

This class replaces ActivityInstrumentationTestCase, which is deprecated. New tests should be written using this base class.

If you prefer an isolated unit test, see ActivityUnitTestCase.

我把兩者的差異性較大的地方用粗體字標出來。

ActivityUnitTestCase的範例在SDK的Sample code裡頭可以找到,ActivityInstrumentationTestCase2則在android source code裡頭有

發個留言

新店大稻埕夜騎?

今天回家吃完飯,本來要早早出發跟老妹騎車去大稻埕買車燈的(我原本的車燈要送給他),不過因為車店臨時說我的卡鞋跟卡踏已經來了,我就先把車騎去換卡踏,在車店門口有兩位先生騎著跟我一模一樣的車,全身車衣打扮,開心的跟老闆打屁 “老闆~我們換了卡鞋真的都摔超過三次囉”,我的臉色頓時鐵青,穿上的卡鞋,試了一下卡踏,覺得應該差不多了,趁老闆接電話的時候,我就偷騎出去繞了一圈,其實上下卡並沒有很恐怖,只是小心一點就好了(我從哪來的自信啊!?)。

因為卡鞋的緣故,時間耽誤了不少,擔心11點前會趕不及不到大稻埕買燈,於是跟老妹說我先衝,然後約在中興橋見面,穿上了卡鞋騎起車來就變成非常愉悅,一方面膝蓋的壓力少了許多,另一方面踩踏的頻率也提昇了不少,爬坡動能加強了許多,大概還不到四十分鐘我就從新店騎到了大稻埕,買了燈,回途老妹當然還沒有出現在中興橋,想說回程在路上再跟他碰面吧,於是我用著自認可以看清楚對向車友面容的速度回程,結果…到了景美我還是沒有見著老妹,他手機又沒有帶在身上,我只好又騎到了福和公園等他,終於…到12點多才在那遇到他,原來老妹在中興橋等了快半小時才回頭@@,真是一整個不好意思啊!

用卡踏騎車,真的很讚,上個星期跟Gerry騎車,他跟我說”騎腳踏車要練RPM(round per min 回轉速)”,搞個我上星期膝蓋痛死了,而且我的RPM一點都跟不上他,頓頓挫挫的,今天才知道,沒有卡踏練啥RPM,Gerry的玩笑可開大了!

今晚因為都沒有摔車,均速也比往常快了許多,終於有運動到的感覺,除了有點對老妹不起外,整體來說還挺開心的,結果想不到洗澡的時候就在浴室摔了一跤,手還折了一下,頗痛,這是報應吧!

路線圖

留言 (8)

這樣子的政府,怎能令人不生氣!

昨天中西美食忽然接到星期天全區的停水通知,大家幾乎是煩惱透了,明明生意最好的時候,政府機關怎麼會挑這個時候停水施工呢?半夜施工不是很好嗎?

星期天的中西美食人聲鼎沸,不過他們的員工卻忙碌的很,因為他們必須不斷的搬水,連年輕的打工妹妹們(依舊無圖)也不例外,到了下午中西美食員工再次打電話去詢問停水會何時結束,結果得到一個令人憤怒的消息,因為昨天下午的大雷雨導致工程受到影響,所以今天沒有停水,停水改到下個星期天!

這樣的政府處理事情的方式,想必這些公務單位也不會去想到這些亂七八糟的決定會造成區域內民眾與店家多少不便與金錢的損失,這樣子的政府,怎能令人不生氣!

Isomnia就因為今天停水不營業,有人要賠他們錢嗎?

“苦民所苦” 這句話在這些人眼中大概跟屁一樣!

發個留言

其實…我也不想敗這麼大

今天晚上一衝動,就去買了一台公路車,Fuji Roubaix Pro 外銷版。

其實本來根本就不想敗這麼大,不過我原本計劃中要買的Fuji Roubaix車架高度只有54公分,考量自己的身高後,還是決定買該店剩下最後一台適合我高度的Roubaix Pro外銷版(車架高度56公分)。

晚上跟媽媽去試騎了一下,Roubaix Pro騎起來非常輕快(全車也才8公斤多一點點),不知不覺就超過了時速30 公里,之前看到別人騎公路車,他們總輕輕鬆鬆從我小折旁緩緩超越,現在終於可以體會並不是他們的腿力足,而是車子差很大!

路線圖

留言 (8)

碎念一下

她說那是一塊福地,搬進去後,她跟他老公的人生目標開始築夢踏實,祝福我。

我渙散的眼睛直盯著她瞧,腦筋卻一陣空白,一句話也說不出。

過去時間走的飛快,留下好似很多但真實卻如此之少。

這只是個起步,一切會慢慢進入正軌的,我這麼告訴自己…

留言 (3)

淡水行

星期天本來計劃一大早要騎老妹的車去淡水,但我居然睡到近11點才起床,掙扎了一下

,總覺得計劃中的事還是要好好執行,於是在11點半超級惡毒的陽光下我還是壯烈的出發了。

一路上騎起來都還蠻輕鬆的,只是老覺得自己騎得還不夠快,雖然路上沒幾個人比我快(其實我的均速還挺慢的,不到20),但事實是沒有人在堤外單車道比速度的啦!

下個星期要挑戰新店淡水來回,Gerry也要一起來,在練個幾個星期,膝蓋還ok的話,就可以考慮買車了:>

路線圖

留言 (2)

日蝕

本來是不太注意這則新聞,不過剛剛出門時,確察覺到陽光變得暗了些,到了巷口的工地旁看到工人們用著焊接用保護鏡看日蝕,驚呼聲連連,我厚顏的也進去參一腳,太陽果然少了ㄧ大半,挺讚的,後來在路上聽早餐店老闆娘說這可是三百年才一次,還有聽到行人抱怨陽光太烈太陽眼鏡很難用,我才意識到自己有多好運,呵呵。

發個留言

夜騎中興橋(有map但無媚圖)

昨天卯起來騎腳踏車到中興橋,中間還被兩三個妹給超車(很抱歉,沒有圖),拖著疲憊的身軀到家已經過了午夜,遜爆了,另外我因為太久沒騎腳踏車,這次夜騎大腿似乎還拉傷了,要多鍛鍊!

夜騎中興橋路線圖

留言 (4)

Android AsyncTask 的怪異行為

AsyncTask是個好物,尤其使用handler 來處理Thread 與 UI thread間畫面的呈現後,回頭看看自己雜亂不堪的程式,更能體會AsyncTask的好~

不過如果同時起一堆AsyncTask後,其實他一點也不Async,事實上他還挺Sync的勒,每個AsyncTask的doInBackground的執行居然還是一個一個排好隊慢慢來,一個執行完後再換下一個。

原因是…請參考下面連結

concurrency of AsyncTasks

ps 下面貼一段API告誡開發者的事項,沒注意的話搞不好會犯錯喔~

Threading rules

There are a few threading rules that must be followed for this class to work properly:

  • The task instance must be created on the UI thread.
  • execute(Params…) must be invoked on the UI thread.
  • Do not call onPreExecute(), onPostExecute(Result), doInBackground(Params…), onProgressUpdate(Progress…) manually.
  • The task can be executed only once (an exception will be thrown if a second execution is attempted.)

發個留言

Android 上面取得IMEI

可以透過Context.getSystemService(Context.TELEPHONY_SERVICE)取得TelephonyManager的實體,然後呼叫getDeviceId()取得字串型態的IMEI

發個留言

較舊的文章 »