如果你已經初步的學習完了Java的內容:[Day06] 寫Android也要學Java!
那接下來可以開始了解Android的元件了,從現在開始可以算是這一系列文章的第二部分。
這篇先從四大元件中的兩個元件開始介紹:
Activity、Service、BroadcastReceiver、ContentProvider。
其實經過了這些年的語言演變,這四個元件有了不同的改變及宿命…
趁著這次的寫稿整理,筆者看蠻多網路上的文章都有介紹Activity,但都跟現在這些元件的理解有些落差了。
筆者想了想,覺得其實最好的方式是看官方文件,甚至是直接去看Source Code,因為這些元件是軟體,他們也會隨者開發者的開發,而有了一些的改變,經年累月後,即便當下這些文章寫的內容是正確的,也會慢慢的變得不那麼正確,文章是死的,軟體是活的。
不過言歸正傳,一開始的時候開發者可能還沒有這麼多的理解,因此靠不同開發者的闡述,也許也是必經的過程。
Activity:官方解釋網址
基本上Activity是整個Android 的核心元件,幾乎沒有App的開發不會接觸到這個元件的,他是整個App與使用者互動的基礎畫面介面元件。
但筆者認為最值得了解的部分,是他的發展沿革以及他跟其他核心元件例如Context的關係。
Activity 從API 1就有了, 期間經歷過百家爭鳴的4.x ActionBar時期,5.x之後有了Toolbar至此開始越來越自由,到現在的AppCompatActivity,這裡面的每個改變對當時來說,都是很驚人的變化,到了現在可以說是時代的眼淚,未來也許會有更多的改變也說不定。 (以前的Drawlayout到現在的NavigationLayout也是一個例子)
目前Activity 預設初始化的AppCompatActivity,他的每個繼承的class,AppCompatActivity -> FragmentActivity -> SupportActivity -> Activity,都值得一探。
- Activity
> 最初的Activity,八千行的程式碼,所有的寶藏都在這裡面了。
- SupportActivity
> 這個Activity改動的幅度好像有點深,筆者怕講錯,就不說自己的見解了了。
- FragmentActivity
> 4.x的時候,Fragment開始很兇,後來Activity的開發方向覺得Activity應該內建啊,他就出現了。
- AppCompatActivity
> Android OS在畫面上的操作越來越開放,例如希望全畫面沈浸式感受,就需要去控制StatusBar or Home Back鍵,同時ActionBarActivity也有許多設計上的極限,就出現了這個。
p.s. 逝去的ActionBarActivity,我們懷念他。
Service:官方解釋網址
一般來說Android提到Service,都是Background Service,筆者對他的理解,簡而言之是一個沒有畫面的Activity,但可以在背景執行,不過隨著Android OS的升級,對權限的要求越來越嚴格,現在已經越來越不適宜用來開發了,筆者認為應該會慢慢的被JobScheduler與Foreground Service取代。
(以前很多Android service的Sample code現在都不能用了!)
- JobScheduler (API levels 21 (Lollipop)+)
- Firebase JobDispatcher (API level 14+)
- Android 探索之備忘錄 [Day21-Foreground Service]
- 【Android】Service前台服务的使用
可能會有人問,啊我公司產品的功能還是要求要在背景偷偷執行,這種要求怎麼辦?老闆他們不管就是要我想辦法。
這是一門學問,叫Service保活,但筆者不太建議花時間研究就是…
突然發現寫了好長的篇幅,還有兩個元件明日再敘。