iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 4
1
Mobile Development

iOS Developer Learning Android系列 第 4

iOS Developer Learning Android. Lesson 04 - Activity (了解祂的生老病死)

Activity是什麼

是Android四大元件之首,反正就把它當作ViewController就對了(不負責任)。☘️☘️☘️(以後只要有可以類比iOS的地方就會出現小燈泡不知道為什麼IT邦幫忙對Emoji的支援度這麼差...很多常見的Emoji都不能用,改幸運草)
之後的課程會再介紹另外三個元件。

好,首先,讓我們先來產生一個新的Activity,作法跟以前Xcode一樣,在資料夾上面右鍵new一個出來,但是它藏得有點深⋯⋯⋯⋯

這邊就可以用到AS一個很方便萬用的熱鍵:Shift兩次
就可以很快速的做到想做的動作。
⚠️⚠️⚠️另外,每個Activity都會先繼承原生的AppCompatActivity,
所以要繼承客製類別的話要自己再動手改...

生命週期

總之先上圖(官方)

Activity跟我們家的ViewController一樣☘️☘️☘️
有所謂的Life cycle
對應關係如下(VDL就是ViewDidLoad,以此類推)

iOS Android
VDL onCreate
WillEnterForeground onRestart
VWA, DidBecomeActive onStart
VDA onResume
VWD, WillResignActive onPause
VDD, DidEnterBackground onStop
dealloc onDestroy
另外要注意的是⚠️⚠️⚠️:
App前後景切換是否會觸發畫面生命週期 或 Alert show/dismiss是否會觸發畫面生命週期,Android都是會的,剛好跟iOS相反。

在code裡面也有實作了,大家可以去看看

切換另一個Activity

Android似乎不像iOS一樣有container view controller的概念去管理view controller間的切換,取而代之的是Intent這個東西。
透過Intent,我們就可以切換到另一個Activity,有點像是presentViewController的感覺,只是我們的丟的東西不是VC,是Intent。
另外,Intent有個好處是,可以協助Activity間數據的傳遞,以前我們可能需要在接受的VC上開屬性,或是新增initWithXXX方法,透過Intent就簡單多了。
例如,我們有兩個Activity,一個叫Lesson03Activity,想跳到另一個StandardLaunchActivity
我們可以這樣寫:

Intent intent = new Intent(Lesson03Activity.this,StandardLaunchActivity.class);
intent.putExtra("title",btnStandard.getText());
startActivity(intent);
  1. new一個Intent出來(不知這邊為何不會自動跳出參數建議= =,你們知道為什麼嗎?歡迎在下方留言告訴我),把所在地跟目的地傳給它
  2. 可以放入你想傳的東西
  3. 用startActivity來換頁
this.setTitle(getIntent().getStringExtra("title"));
  1. 另一邊就可以把人家給的東西秀出來(只是不同型別要用不同的方法)

參考資料

今天的範例程式

可以去 https://github.com/mark33699/IDLA 看一下順便給顆⭐️


如果你喜歡我的影片別忘了按讚分享加訂閱,開啟紅色的小鈴鐺,我們明天見~


上一篇
iOS Developer Learning Android. Lesson 03 - 專案相關設定 (實現iOS上的Target管理)
下一篇
iOS Developer Learning Android. Lesson 05 - Activity (你有聽說過啟動模式嗎?)
系列文
iOS Developer Learning Android30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言