發表文章

目前顯示的是 1月, 2018的文章

Android – Activity / Service 的生命狀態

之前在學習 android app 開發所做的筆記,在此記錄一下. 每個Activity有四個生命狀態: Active/Running:當一個Activity在螢幕的最上層時(堆疊的最頂端),它就是屬於Active或Running的狀態 Paused:如果一個Activity失去焦點(focus)但還看得到它的畫面,那失去焦點的這個Activity則處在Paused的狀態。失去焦點的Activity它還是完全活著的,並沒有消失。(活著的意思是指Activity自已本身所有的狀態及資料都還是存在的也跟視窗管理程式window manager保持連繫著)像這種Paused的Activity,可能在系統的記憶體不足的時後,被系統自動移除掉 Stopped:如果一個Activity被其它的Activity完全的遮住時,這個被遮的Activity處於stop的狀態,它仍然保有全部的狀態及資料,但因為它已不再被使用者看見,所以它的畫面是被隱藏起來的(畫面不需要更新)。當系統記憶體不足時,這種Stop狀態的Activity是最先被系統考慮拿來釋放記憶體的 Finished: 當一個Activity處於Pause或Stop的狀態時,系統可以要求Activity結束(Finish)或直接移除(Kill)它。當它需要再度呈現在使用者面前時,它必需要能完整的重新啟動及回復先前的狀態 每個Service有兩種生命狀態: Started:當一個組件(例如:一個Activity)呼叫startService()的時候,Service就進入Started狀態。一個Service一旦被啟動,就會一直在背景運行,就算啟動的組件被關閉還是繼續運行。 一般而言,一個被啟動的Service只會執行一個功能,執行完畢後並不會回傳結果給啟動的組件。例如:某個Service會透過網路下載或上傳一個檔案。當傳輸工作結束,該Service應該自動關閉。 Bound:當一個組件(例如:一個Activity)呼叫bindService()的時候,Service就進入Bound狀態。 處於Bound狀態的Service,和呼叫的組件的關係類似client-server介面,讓組件和Service互相溝通、傳送與接收信息,甚至可以透過IPC跨process交換信息。 一個處於Bound狀態的Service,只要有一個對應的

Vue.js – vuex 狀態管理

圖片
入門前最後需了解的一個 library ,vuex 這集中式存儲管理所有組件的資料狀態. 當一個 app 在做非同步處理時,我們希望可以有個 Loading 的畫面可以讓使用者知道 app 是有在 work 的,一般都是把這個功能做在主頁面上,其它的子頁面都是呼叫主頁面的 method 來 enable/disable,這個時候就是 vuex 上場的時機了. Vuex 這個部份網路上已有很多的介紹了,請自行善用 Google 大神吧. Vuex 觀念 首先我們依照官網的步驟安裝 vuex 在來在 src 下新增一個 store 的資料夾,裡面分別有 5 隻 js 檔案 分別在各個 js 檔案中撰寫相對應的程式碼. mutations_types.js mutations.js getters.js actions.js index.js 按著在 main.js 中引用 store 中的 js 檔案. 接著我們修改 App.vue 這個 main page 接著修改 component  的程式碼 如此就可以在切換頁面時出現 Loading 的效果. PS : 這個時候在 run 時會有 error 的問題, “ …mapActions “ 這個 method 無法 compile,需安裝Stage 2 preset 來 bypass 這個錯誤訊息.相關的訊息如下: https://forum-archive.vuejs.org/topic/5023/i-am-getting-an-error-when-i-use-mapgetters-on-vuex-2-0 https://babeljs.io/docs/plugins/preset-stage-2/ .babelrc file