負責任務:
- 組間協調(被漫畫師罵,被項目經理罵,被技術主管罵,被衝刺經理罵)
- 需求分析(提出一堆沒什麼用的東西)
- 系統主要業務(隊友搭好了架構之後爲所欲爲)
- 客戶端架構(不動腦子寫代碼)
- 重構(不動腦子寫代碼的結果)
一、用例分析
- Part 1 :
- 功能主題 : 添加自設的進程黑名單
- 角色 : 用戶
- 觸發條件 :
1. 用戶進入「查看黑名單」模式
2. 點擊了「添加新進程」按鈕
- Part 2 :
- 功能主題 : 點擊開始後,進入「懲罰」模式
- 角色 : 用戶
- 觸發條件 :
1. 用戶設置時間大於1minute
2. 用戶在開始界面摁下了開始按鈕
二、技術說明書
Part 1 :
所用模型 : MVVM
- Model層 :
- Service層 :
- ViewModel層 :
- View層 :
- Model層 :
流程:
- 用戶點擊
添加進程 button
=>ViewProgressPage
跳轉到addProgressPage
- 用戶點擊
「Step1:打開你想添加的應用程序,摁下確認」 button
=> 調用AddProgressViewModel
中的字段_ProcessService
中的方法GetProcessNow
,獲取當前進程 - 用戶點擊
「Step2:關閉該應用程序,摁下確認」 button
=> 調用AddProgressViewModel
中的字段_ProcessService
中的方法GetProcessNow()
,獲取當前進程,並將兩個值傳入該字段的GetDiffrentProcess()
方法,返回此段時間內不同的線程,即爲所求 - 用戶在ListView中選擇進程,在右側textBox輸入名稱後,點擊
「Step3:關閉該應用程序,摁下確認」 button
=> 調用AddProgressViewModel
中的字段_LocalBlackListService
中的方法AddNewBlackList()
,將新進程存入本地數據庫,執行完畢後,addProgressPage
跳轉到ViewProgressPage
- 用戶點擊
Part 2 :
所用模型 : MVVM
- Model 層:
同上 - Service層 :
同上 - ViewModel層 :
- View層
- Model 層:
流程:
用戶點擊
添加進程 button
=>MainPage
跳轉到CountDownPage
,在新頁面的Loaded
方法中創建類型爲Timer
的進程,更新頁面倒計時,並且傳遞BeginListenMessage
, 執行CountDownViewModel
中的登記好的線程public class CountDownViewModel : ViewModelBase{ private Thread t1; ... public CountDownViewModel(){ //Refresh方法 : 監聽算法 t1 = Thread(Refresh); ... Messenger.default.registed<BeginListenMessage>(this, (message) =>{ t1.start(); }); }
Refresh方法 :
調用
AddProgressViewModel
中的字段_ProcessService
中的方法GetProcessNow()
,獲取當前進程調用
AddProgressViewModel
中的字段_ProcessService
中的方法IfBlackListProcessExist()
,獲取當前進程是否有黑名單- 若有 => 喚醒音樂播放(若音樂已播放,只調節音量),傳遞 Message 到 CountDownPage,修改Dispatcher的值 => 執行頁面彈出,進程掛起兩秒後繼續判斷
- 若無 => 若音樂播放,關閉音樂
兩線程將在點擊
提前完成
與放棄任務
按鈕後 / 時間運行到 00:00 後執行stop()
,並將結果寫到數據庫,CountDownPage
跳轉到MainPage
Thanks,Thats all.