日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

【IOC 控制反转】Android 布局依赖注入 ( 布局依赖注入步骤 | 布局依赖注入代码示例 )

發(fā)布時(shí)間:2025/6/17 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【IOC 控制反转】Android 布局依赖注入 ( 布局依赖注入步骤 | 布局依赖注入代码示例 ) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 總結(jié)
  • 一、Android 布局依賴(lài)注入步驟
  • 二、Android 布局依賴(lài)注入示例
    • 1、創(chuàng)建依賴(lài)注入庫(kù)
    • 2、聲明注解
    • 3、Activity 基類(lèi)
    • 4、依賴(lài)注入工具類(lèi)
    • 5、客戶端 Activity
  • 三、博客源碼

總結(jié)

Android 依賴(lài)注入的核心就是通過(guò)反射獲取 類(lèi) / 方法 / 字段 上的注解 , 以及注解屬性 ; 在 Activity 基類(lèi)中 , 獲取該注解 以及 注解屬性 , 進(jìn)行相關(guān)操作 ;





一、Android 布局依賴(lài)注入步驟



正??刂?: Android 中加載布局操作 , 由自己的 Activity 類(lèi)加載布局 ;

控制反轉(zhuǎn) : Android 中加載布局操作 , 由 第三者 加載 Activity 布局 ;


Android 布局依賴(lài)注入步驟 :

  • ① 客戶端 Activity : 定義 MainActivity , 繼承 BaseActivity ;
  • ② IOC 庫(kù)中的 Activity 父類(lèi) : 定義 BaseActivity , 在 BaseActivity 中的 onCreate 方法中 , 處理依賴(lài)注入相關(guān)邏輯 ;
  • ③ 依賴(lài)注入邏輯 : 獲取 Activity 類(lèi) , 并使用反射獲取類(lèi)上的注解屬性 ( 布局文件 ID ) , 為 Activity 設(shè)置該布局文件 ;




二、Android 布局依賴(lài)注入示例




1、創(chuàng)建依賴(lài)注入庫(kù)


首先在 Android 應(yīng)用中 , 創(chuàng)建一個(gè) " Android Library " ,

設(shè)置主應(yīng)用依賴(lài)該 Android 依賴(lài)庫(kù) :

dependencies {implementation project(path: ':ioc_lib') }

2、聲明注解


創(chuàng)建如下注解 :

package kim.hsl.ioc_lib;import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/*** 自定義注解* 用于依賴(lài)注入*/ @Target(ElementType.TYPE) // 該注解作用于類(lèi)上 @Retention(RetentionPolicy.RUNTIME) // 注解保留到運(yùn)行時(shí) public @interface ContentView {int value(); // 接收 int 類(lèi)型值 }

@Target(ElementType.TYPE) 表示該注解作用與類(lèi)上 ;

@Retention(RetentionPolicy.SOURCE) 注解保留到源碼期 , Java 源碼時(shí)期 RetentionPolicy.SOURCE -> Class 字節(jié)碼時(shí)期 RetentionPolicy.CLASS -> JVM 運(yùn)行時(shí)時(shí)期 RetentionPolicy.RUNTIME ;

int value() 表示該注解接收一個(gè) int 類(lèi)型的值 ;


3、Activity 基類(lèi)


package kim.hsl.ioc_lib;import android.app.Activity; import android.os.Bundle;import androidx.annotation.Nullable;public class BaseActivity extends Activity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 在此處注入布局// 此處傳入的 Activity 參數(shù)是 MainActivity 子類(lèi)對(duì)象InjectUtils.inject(this);} }

4、依賴(lài)注入工具類(lèi)


package kim.hsl.ioc_lib;import android.app.Activity;public class InjectUtils {/*** 為 Activity 注入布局* @param activity 該 Activity 是繼承了 BaseActivity 的 MainActivity 實(shí)例對(duì)象*/public static void inject(Activity activity) {// 獲取 Class 字節(jié)碼對(duì)象Class<? extends Activity> clazz = activity.getClass();// 反射獲取類(lèi)上的注解ContentView contentView = clazz.getAnnotation(ContentView.class);// 獲取注解中的布局 IDint layoutId = contentView.value();// 為 Activity 設(shè)置顯示的布局activity.setContentView(layoutId);} }

5、客戶端 Activity


package kim.hsl.ioc_demo;import kim.hsl.ioc_lib.BaseActivity; import kim.hsl.ioc_lib.ContentView;/*** 當(dāng)該 MainActivity 啟動(dòng)時(shí) , 調(diào)用 BaseActivity 的 onCreate 方法* 在 BaseActivity 的 onCreate 方法中注入布局*/ @ContentView(R.layout.activity_main) public class MainActivity extends BaseActivity { }

運(yùn)行結(jié)果 :





三、博客源碼



GitHub : https://github.com/han1202012/IOC_Demo

CSDN : https://download.csdn.net/download/han1202012/24010683

總結(jié)

以上是生活随笔為你收集整理的【IOC 控制反转】Android 布局依赖注入 ( 布局依赖注入步骤 | 布局依赖注入代码示例 )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。