日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

安卓APP_ 四大基本组件(1)—— Activity

發布時間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓APP_ 四大基本组件(1)—— Activity 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

摘自:安卓APP_ 四大基本組件(1)—— Activity
作者:丶PURSUING
發布時間: 2021-04-22 15:56:18
網址:https://blog.csdn.net/weixin_44742824/article/details/116006048

配合菜鳥教程食用效果更佳:4.1.1 Activity初學乍練

一、認識Activity

經過前面的學習,對Activity一定不陌生,今天來系統地認識一下它。

Activity是一個應用程序的組件,他在屏幕上提供了一個區域,允許用戶在上面做一些交互性的操作, 比如打電話,照相,發送郵件,或者顯示一個地圖!Activity可以理解成一個繪制用戶界面的窗口, 而這個窗口可以填滿整個屏幕,也可能比屏幕小或者浮動在其他窗口的上方, 一個App允許有多個Activity

二、Activity跳轉

點擊按鈕跳轉Activity

認識清單列表

手動創建第二個Activity

當然可以自動創建(直接生成java文件和xml文件)
為了更好地了解這個過程,我們選擇手動創建一個MainActivity2.java,繼承系統的Activity并實現onCreate,添加layout布局。


組件還必須要在清單文件中注冊(認識清單文件中有說明)

創建按鈕點擊事件跳轉Activity

具體細節代碼中呈現

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> <!--清單文件--> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.myactivity"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.MyActivity"> <!-- 首次啟動的是默認的MainActivity--><activity android:name=".MainActivity"> <!-- 激活默認的Activity的意圖:點擊圖標直接打開默認的Activity--><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><!-- 組件必須在清單文件里面注冊--><activity android:name=".MainActivity2"/></application> </manifest>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

Mainactivity.java

//默認的Activity 繼承系統的Activity,成為它的子類 public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}//跳轉到第二個Activity的事件函數public void startActivity2(View view) {startActivity(new Intent(this,MainActivity2.class));} }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:layout_width="352dp"android:layout_height="75dp"android:text="我是MainActivity1"android:textSize="40dp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /><Buttonandroid:id="@+id/button"android:layout_width="232dp"android:layout_height="79dp"android:layout_marginBottom="196dp"android:text="點我跳轉"android:textSize="25sp"android:onClick="startActivity2"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

Mainactivity2.java

public class MainActivity2 extends AppCompatActivity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);} }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

activity_main2.xml

<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="352dp"android:text="我是MainActivity2"android:textSize="40dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

三、Activity生命周期

簡單來說,無論是哪一個應用,每個卡片的狀態,存活還是銷毀,加載還是未加載,這就是所謂的生命周期。

在上文的基礎上,添加生命周期函數,并在每個函數里打印調試信息觀察執行狀況:

MainActivity.java

//默認的Activity 繼承系統的Activity,成為它的子類 public class MainActivity extends AppCompatActivity {private static final String TAG = "zhua";@Override//創建protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Log.e(TAG, "onCreate:");}@Overrideprotected void onStart() {super.onStart();Log.e(TAG, "onStart: ");}@Overrideprotected void onRestart() {super.onRestart();Log.e(TAG, "onRestart: ");}@Overrideprotected void onResume() {super.onResume();Log.e(TAG, "onResume: " );}@Overrideprotected void onPause() {super.onPause();Log.e(TAG, "onPause: " );}@Overrideprotected void onStop() {super.onStop();Log.e(TAG, "onStop: " );}@Overrideprotected void onDestroy() {super.onDestroy();Log.e(TAG, "onDestroy: ");}//跳轉到第二個Activity的事件函數public void startActivity2(View view) {startActivity(new Intent(this,MainActivity2.class));} }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

(1)首次運行軟件

界面打開,onCreate先被調用,意味著可以在這里做布局的初始化工作

onStart():是activity界面被顯示出來的時候執行的,用戶可見。

onResume():是當該activity與用戶能進行交互時被執行,用戶可以獲得activity的焦點,能夠與用戶交互。

(2)點擊主頁面按鈕,回到桌面,卡片不可見

(3)再次打開

(4)點擊按鈕跳轉到另外一個Activity

(5)點擊返回按鈕到桌面,再返回卡片

點擊返回按鈕返回到桌面使得卡片不可見執行了銷毀。

一張圖總結生命周期

(圖來自菜鳥教程)

四、其他三大組件暫不深入了解

Service:服務

當應用不顯示時,程序可以掛載在后臺執行下載,更新,音樂播放等后臺服務。

BroadcastReceiver:廣播

BroadcastReceiver就是應用程序間的全局大喇叭,即通信的一個手段, 系統自己在很多時候都會發送廣播,比如電量低或者充足,剛啟動完,插入耳機,輸入法改變等, 發生這些時間,系統都會發送廣播,這個叫系統廣播。

每個APP都會收到,如果你想讓你的應用在接收到 這個廣播的時候做一些操作,比如:系統開機后,偷偷后臺跑服務,這個時候你只需要為你的應用 注冊一個用于監視開機的BroadcastReceiver,當接收到開機廣播就啟動服務。

當然我們也可以自己發廣播,比如:接到服務端推送信息,用戶在別處登錄,然后應該強制用戶下線回到 登陸界面,并提示在別處登錄。

ContentProvider:內容提供者

我們想在自己的應用中訪問別的應用,或者說一些ContentProvider暴露給我們的一些數據, 比如手機聯系人,短信等,我們想對這些數據進行讀取或者修改,這就需要用到ContentProvider了。

我們自己的應用,想把自己的一些數據暴露出來,給其他的應用進行讀取或操作,我們也可以用 到ContentProvider,另外我們可以選擇要暴露的數據,就避免了我們隱私數據的的泄露。

總結

以上是生活随笔為你收集整理的安卓APP_ 四大基本组件(1)—— Activity的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。