項目
搜芽移動客戶端
----seller,app,base三個包的簡單說明
作者
曾金龍
Tel:18664312687 QQ :
[email protected]
時間
2014-10-14
說明
代碼說明
第一部分 Seller包
1,啟動頁面 StartUpActivity.java
啟動頁面,搜芽的第一個頁面。Android開發中需要在Manifest中設置程序的入口。
如下:
android:name="com.souya.seller.StartUpActivity"
android:label="@string/app_name"
android:theme="@style/notitle">
啟動頁面的邏輯:
展示搜芽圖片,故意停留2秒(2000毫秒),然後跳轉到登入頁面,采用new Handler().postDelayed方法實現
。詳見代碼,不再復述。
2,登入頁面
LoginActivity.java
登入頁面的邏輯:
接受用戶輸入,在本地保存,並向服務器發出登入請求,接收到回復如果成功,則跳轉到主頁面。
其邏輯框圖如下:
在用戶觸發按鈕的Onclick則進行登入。開啟一個異步任務實現。異步任務中調用DataProxy進行登入包的構建與發送。DataProxy將會是我們整個程序和服務器打交道的代理。可以看看裡面的代碼,它是對http請求和相應的一個封裝。
登入返回之後,我們會開啟一個線程專門做心跳處理。定時發送心跳包。
具體見:SellerApplication.getInstance().mHeartbeatThread = new Thread(new Runnable() {
這行代碼。
尚未實現:注冊。
3 ,程序主頁面 MainActivity.java
程序的主界面
1)繼承自 SellerActivity 主要是為了監聽一些事件。具體可以去看代碼。
2)ViewPager TabPageIndicator TabsAdapter 實現Tab頁面,而這個Indicator是ViewPagerIndicator項目的(我們在工程導入文檔中有說明)。
需要知道掌握的就是如何添加一個Tab頁面放進來。
mTabsAdapter.addTab即可。
3)ActionBar。知道如何在ActionBar裡面添加一個自己的目錄選項。見onCreateOptionsMenu
4)TabsAdapter內部類。可以看看,無需改動。
第二部分 app包
1 活動頁管理 ActivityManager
對Activity的管理,為什麼要這個類,可以去網上搜,主要是為了解決回退時候的Activity管理問題。
2 崩潰日志捕獲 CrashHandler
當APP異常退出的時候,記錄日志到文件,這樣方便我們分析哪裡崩潰。具體見代碼。
3 IP監控 IPMonitor
暫時未用到。
4 SellerApplication 應用類
Application類一般用來保存全局數據,用來最開始的初始化。這類功能和設計可以去網上學習。
我們在這裡初始化log4j的日志,保存用戶登入賬號信息。
第三部分 base包
這個包主要是幾個基類。為了更好的抽象和監聽事件,我們抽象了SellerFragment,它繼承了Fragment。
1 SellerFragment
關於Android推薦使用Fragment代替Activity的文章,網上學習,這裡不做介紹。
SellerFragment主要集成一些常用的功能。
1)圖片緩存對象 ImageFetcher mImageFetcher(圖片緩存對象的內部機制無需了解,是第三方的代碼,後續會用即可)。
2)對Fagment常見操作的封裝。
2 RefreshableFragment
繼承了SellerFragment,主要添加了對刷新動作的處理。
3 BaseFragment
繼承了RefreshableFragment
主要加了,對取到圖片事件的監聽;網絡變化的監聽;刷新操作的監聽。
4 SellerActivity
Seller程序中各種Activity的基類。主要是在裡面豐富了對菜單的處理。
注意:ClothSearch mClothSearch;域是為了在ActionBar中添加搜索而生的。在Actionbar中做搜索是一個行業通用設計也是個難點,後續有時間細致的學習一下。
Q&A:
1 為什麼都是Fragment而不是Activity?
答:據我看到的,外包用的比較多的是Activity,而我們這裡用到比較多的Fragment的,我們的原則是能用Fragment的地方就盡量不要用Activity。
2 有些代碼看不懂,聲明了卻沒有地方用到,為什麼?
答:有些代碼我沒剔除干淨,不是懶,因為可能現在用不到,但我覺得後續肯定會用到,所以就留了個引子在那裡。如果看到這樣的代碼,無需過多關注。
3 為什麼這個版本和設計需求有初入?
答:因為精力有限,以及設計有時候並不一定最好。比如,那個搜索,請看市面通用做法,大家的做法就是對的,我們無需懷疑那麼多互聯網公司的設計能力。當然,更多的丑是因為沒時間去調。