Android 學習之 Activity
活動(Activity)是最容易吸引到用戶的地方了,它是一種可以包含用戶界面的組件, 主要用于和用戶進行交互。一個應用程序中可以包含零個或多個活動。
創建 Activity
public class FirstActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);//給當前的活動加載一個布局
requestWindowFeature(Window.FEATURE_NO_TITLE);//不在活動當中顯示標題欄
}
} 創建 Activity 只需要繼承 Activity 類,并且可以重寫 onCreate 方法。
在 res/layout 目錄下創建布局文件 XML
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button 1"
/>
</LinearLayout> 最后一步在 AndroidManifest 文件中注冊
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.activitytest"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".FirstActivity"
android:label="This is FirstActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
</activity>
</application>
</manifest> 活動當中使用 Toast
Toast 是 Android 系統提供的一種非常好的提醒方式,在程序中可以使用它將一些短小的 信息通知給用戶,這些信息會在一段時間后自動消失,并且不會占用任何屏幕空間,我們現 在就嘗試一下如何在活動中使用 Toast。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.first_layout);
Button button1 = (Button) findViewById(R.id.button_1);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(FirstActivity.this, "You clicked Button 1",
Toast.LENGTH_SHORT).show();
} });
} 使用 Intent 給 Activity 傳遞消息
創建第二個布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button 2"
/>
</LinearLayout> 創建第二個 Activity:
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.second_layout);
}
} 注冊 Activity:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".FirstActivity"
android:label="This is FirstActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SecondActivity" >
</activity>
</application> Intent 的用法大致可以分為兩種:
- 顯式 Intent
- 隱式 Intent </ul>
最簡單的方式創建(顯示):
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent); 隱式使用略,以后詳細學習。
活動的生命周期
Android 中的活動是可以層疊的。 我們每啟動一個新的活動,就會覆蓋在原活動之上,然后點擊 Back 鍵會銷毀最上面的活動, 下面的一個活動就會重新顯示出來。
其實 Android 是使用任務(Task)來管理活動的,一個任務就是一組存放在棧里的活動 的集合,這個棧也被稱作返回棧(Back Stack)。每當我們啟動了一個新的活動,它會在返回棧中入棧,并處于棧頂的位置。而每當我們按下 Back 鍵或調用 finish() 方法去銷毀一個活動時,處于棧頂的活動會出棧,這時前一個入棧的活動就會重新處于棧頂的位置。系統總是會顯示處于棧頂的活動給用戶。
每個活動在其生命周期中最多可能會有四種狀態。
- 運行狀態:活動位于返回棧的棧頂時,這時活動就處于運行狀態。
- 暫停狀態:當一個活動不再處于棧頂位置,但仍然可見時,這時活動就進入了暫停狀態。例如,被彈出層覆蓋的頁面。
- 停止狀態:當一個活動不再處于棧頂位置,并且完全不可見的時候,就進入了停止狀態。
- 銷毀狀態:當一個活動從返回棧中移除后就變成了銷毀狀態。 </ul>
- onCreate():活動第一次被創建的時候調用。
- onStart():這個方法在活動由不可見變為可見的時候調用。
- onResume():這個方法在活動準備好和用戶進行交互的時候調用。此時的活動一定位于返回棧的棧頂,并且處于運行狀態。
- onPause():這個方法在系統準備去啟動或者恢復另一個活動的時候調用。
- onStop():這個方法在活動完全不可見的時候調用。
- onRestart():這個方法在活動由停止狀態變為運行狀態之前調用,也就是活動被重新啟動了。
- onDestroy():這個方法在活動被銷毀之前調用,之后活動的狀態將變為銷毀狀態。 </ul>
- 第一行代碼 </ol>
Activity 類中定義了七個跟生命周期相關的方法
完整的生命周期圖:
【參考資料】
---EOF---
</article> </code></code></code></code></code></code></code></code> 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!