【Android】初識Activity(一)

1. 什么是Activity

  • Activity是一個應(yīng)用程序組件檩赢,它的主要功能是提供界面,用戶可以用來交互為了完成某項任務(wù)违寞,例如用戶登錄贞瞒、拍照、撥號趁曼、聊天等军浆。
  • 一個應(yīng)用程序可能由一個多個Activity組成,這些Activity怎么顯示挡闰,需要多少個Activity乒融,完全依賴于應(yīng)用的設(shè)計者。
  • 一個應(yīng)用程序必須指定一個Activity作為主Activity摄悯,它是程序啟動時首先顯示的界面赞季。
  • 每個Activity默認的被給予一個窗口來繪制,一般的奢驯,這個窗口占滿整個屏幕申钩,但是他可以比屏幕小并且浮在另一個窗口的上面。
  • 當一個Activity因為新的Activity啟動而被停止時瘪阁,它會收到狀態(tài)變化的通知撒遣,這樣的變化有多個断盛,每個都會引起系統(tǒng)調(diào)用一個相應(yīng)的回調(diào)方法以通知Activity,這些回調(diào)方法被統(tǒng)稱為“生命周期回調(diào)方法”愉舔。這些回調(diào)方法分別在Activity被創(chuàng)建钢猛、停止、恢復(fù)轩缤、銷毀時被調(diào)用命迈。

2. Activity的使用

  • 2.1 如何設(shè)置主Activity
    在項目的AndroidManifest.xml文件中,聲明對應(yīng)的Activity火的,同時在activity標簽內(nèi)添加以下代碼:
<intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

整體示例如下:

<activity
      android:name=".MainActivity"
      android:label="@string/app_name" >
      <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
</activity>
  • 2.2 如何啟動其它的Activity
    那么壶愤,我們?nèi)绾卧谝粋€Activity中啟動另外一個Activity呢?這里就需要我們使用另外一個重要的組件Intent(關(guān)于Intent組件在這里就不做過多的贅述了)馏鹤。
    示例如下(在ManinActivity啟動LoginActivity--即跳轉(zhuǎn)到LoginActivity界面):
    Intent intent = new Intent();// 新建一個Intent對象
    intent.setClass(MainActivity.this, LoginActivity.class);// 設(shè)置Intent目標
    startActivity(intent);// 執(zhí)行跳轉(zhuǎn)(啟動LoginActivity)
  • 2.3 Activity常用的數(shù)據(jù)傳遞方式
    • 1.Intent
      傳遞(value可以為其它數(shù)據(jù)類型,key必須為String類型):
        Intent intent = new Intent();// 新建一個Intent對象
        intent.setClass(MainActivity.this, LoginActivity.class);// 設(shè)置Intent目標
        intent.putExtra("key", "value");// 設(shè)置要傳遞內(nèi)容的key與value
        startActivity(intent);// 執(zhí)行跳轉(zhuǎn)(啟動LoginActivity)

獲取(在目標Activity使用一下代碼獲取傳遞的值):

getIntent().getStringExtra("key");// 獲取執(zhí)行傳遞動作的Intent根據(jù)key獲取對應(yīng)的value值
 - 2.SharedPreference
 存:
        SharedPreferences sp = getSharedPreferences("test", 0);// test->存儲文件名
        SharedPreferences.Editor edit = sp.edit();
        edit.putString("username", "admin");
        edit.putString("password", "123456");
        edit.commit();
 日鹘贰:
        SharedPreferences ps = getSharedPreferences("test", 0);// test是存儲文件
        String userName = ps.getString("username", "defaultName");
        String passWord = ps.getString("password", "defaultPw");
 > SharedPreference存儲步驟:
    1.根據(jù)Context獲取SharedPreferences對象;
    2.利用edit()方法獲取Editor對象;
    3.通過Editor對象存儲key-value鍵值對數(shù)據(jù);
    4.通過Editor對象存儲key-value鍵值對數(shù)據(jù)。
 - 3.SQLite
 關(guān)于SQLite內(nèi)容過多湃累,推薦參閱 [ANDROID開發(fā)之SQLite詳解](http://blog.csdn.net/harvic880925/article/details/24516545)勃救。

注:Intent/ShraedPreference適合較簡單的數(shù)據(jù)傳輸,一般用于傳輸一些簡單的參數(shù)或配置信息治力。較大數(shù)據(jù)量的傳輸蒙秒,一般使用SQLite的方式實現(xiàn)。


3. Activity的啟動模式#

  • 3.1 standard 默認的啟動模式,每次激活A(yù)ctivity時(startActivity),都創(chuàng)建Activity實例,并放入任務(wù)棧宵统;
  • 3.2 singleTop 如果某個Activity自己激活自己,即任務(wù)棧棧頂就是該Activity,則不需要創(chuàng)建,其余情況都要創(chuàng)建Activity實例晕讲;
  • 3.3 singleTask 如果要激活的那個Activity在任務(wù)棧中存在該實例,則不需要創(chuàng)建,只需要把此Activity放入棧頂,并把該Activity以上的Activity實例都出棧;
  • 3.4 singleInstance 如果應(yīng)用1的任務(wù)棧中創(chuàng)建了MainActivity實例马澈,如果應(yīng)用2也要激活MainActivity瓢省,則不需要創(chuàng)建,兩應(yīng)用共享該Activity實例痊班。

啟動模式:啟動模式簡單地說就是Activity啟動時的策略,在AndroidManifest.xml中的標簽的android:launchMode屬性設(shè)置.
任務(wù)棧:每個應(yīng)用都有一個任務(wù)棧勤婚,是用來存放Activity的,功能類似于函數(shù)調(diào)用的棧辩块,先后順序代表了Activity的出現(xiàn)順序.


4. Activity的生命周期

Activity生命周期.png
  1. 啟動Activity:先調(diào)用onCreate()蛔六,然后調(diào)用onStart()荆永,最后調(diào)用onResume()废亭,Activity進入運行狀態(tài);
  2. 當前Activity被覆蓋或鎖屏:先調(diào)用onPause(),然后暫停當前Activity的執(zhí)行狀態(tài);
  3. 解除Activity覆蓋或解鎖時:先調(diào)用onResume()具钥,然后再次進入運行狀態(tài);
  4. 跳轉(zhuǎn)到新的Activity界面或按Home鍵回到主屏:應(yīng)用進入后臺,系統(tǒng)會先調(diào)用onPause()豆村,然后調(diào)用onStop(),轉(zhuǎn)入停滯狀態(tài);
  5. 返回到該Activity:先調(diào)用onRestart()骂删,然后調(diào)用onStart()掌动,最后調(diào)用onResume()四啰,重新進入到運行狀態(tài);
  6. 在第1.2/1.4步驟情況下,當前Activity被系統(tǒng)kill,用戶操作退回到當前Activity:調(diào)用onCreate()->onStart()->onResume(),進入運行狀態(tài);
  7. 用戶退出當前Activity:先調(diào)用onPause()粗恢,然后調(diào)用onStop()柑晒,最后調(diào)用onDestory(),結(jié)束當前Activity的運行狀態(tài).
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末眷射,一起剝皮案震驚了整個濱河市匙赞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌妖碉,老刑警劉巖涌庭,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異欧宜,居然都是意外死亡坐榆,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門冗茸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來席镀,“玉大人,你說我怎么就攤上這事夏漱∮淅ィ” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵麻蹋,是天一觀的道長跛溉。 經(jīng)常有香客問我,道長扮授,這世上最難降的妖魔是什么芳室? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮刹勃,結(jié)果婚禮上堪侯,老公的妹妹穿的比我還像新娘。我一直安慰自己荔仁,他們只是感情好伍宦,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著乏梁,像睡著了一般次洼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上遇骑,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天卖毁,我揣著相機與錄音,去河邊找鬼落萎。 笑死亥啦,一個胖子當著我的面吹牛炭剪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播翔脱,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼奴拦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了届吁?” 一聲冷哼從身側(cè)響起粱坤,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瓷产,沒想到半個月后站玄,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡濒旦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年株旷,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尔邓。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡晾剖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出梯嗽,到底是詐尸還是另有隱情齿尽,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布灯节,位于F島的核電站循头,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏炎疆。R本人自食惡果不足惜卡骂,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望形入。 院中可真熱鬧全跨,春花似錦、人聲如沸亿遂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛇数。三九已至挪钓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間苞慢,已是汗流浹背诵原。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工英妓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留挽放,地道東北人绍赛。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像辑畦,于是被迫代替她去往敵國和親吗蚌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容