登录/注册

ad怎么封装

更多

在 Android 开发中,"AD" 可能指代 Android Device(设备信息)或 Advertising(广告模块),以下是两种常见场景的封装方案:


方案一:设备信息工具类封装(Android Device)

用于统一管理设备信息获取逻辑:

public class DeviceUtils {
    // 单例模式封装
    private static volatile DeviceUtils instance;

    private DeviceUtils() {}

    public static DeviceUtils getInstance() {
        if (instance == null) {
            synchronized (DeviceUtils.class) {
                if (instance == null) {
                    instance = new DeviceUtils();
                }
            }
        }
        return instance;
    }

    // 获取设备基础信息
    public String getDeviceInfo() {
        return Build.BRAND + " " + Build.MODEL; // 示例:Xiaomi Mi 10
    }

    // 获取系统版本
    public String getAndroidVersion() {
        return "Android " + Build.VERSION.RELEASE;
    }

    // 获取屏幕分辨率(需Context)
    public String getScreenResolution(Context context) {
        DisplayMetrics dm = context.getResources().getDisplayMetrics();
        return dm.widthPixels + "x" + dm.heightPixels;
    }
}

使用示例:

String deviceInfo = DeviceUtils.getInstance().getDeviceInfo();

方案二:广告模块封装(Advertising SDK)

统一管理广告加载/展示逻辑:

public class AdManager {
    private final Context context;
    private InterstitialAd mInterstitialAd;

    public AdManager(Context context) {
        this.context = context.getApplicationContext();
    }

    // 初始化广告SDK
    public void init(String adUnitId) {
        MobileAds.initialize(context);
        loadInterstitialAd(adUnitId);
    }

    // 加载插页广告
    private void loadInterstitialAd(String adUnitId) {
        mInterstitialAd = new InterstitialAd(context);
        mInterstitialAd.setAdUnitId(adUnitId);
        mInterstitialAd.loadAd(new AdRequest.Builder().build());
    }

    // 展示广告(带回调)
    public void showInterstitialAd(AdCallback callback) {
        if (mInterstitialAd != null && mInterstitialAd.isLoaded()) {
            mInterstitialAd.setAdListener(new AdListener() {
                @Override
                public void onAdClosed() {
                    callback.onAdDismissed();
                    loadInterstitialAd(mInterstitialAd.getAdUnitId()); // 重新加载
                }
            });
            mInterstitialAd.show();
        } else {
            callback.onAdFailed("Ad not loaded");
        }
    }

    // 广告回调接口
    public interface AdCallback {
        void onAdDismissed();
        void onAdFailed(String error);
    }
}

使用示例:

AdManager adManager = new AdManager(this);
adManager.init("ca-app-pub-3940256099942544/1033173712"); // 测试ID

// 展示广告
adManager.showInterstitialAd(new AdManager.AdCallback() {
    @Override
    public void onAdDismissed() {
        Log.d("AD", "广告关闭后继续流程");
    }

    @Override
    public void onAdFailed(String error) {
        Log.e("AD", "广告加载失败: " + error);
    }
});

关键封装原则:

  1. 单一职责
    每个类/方法只处理一种设备类型或广告类型

  2. 接口隔离
    广告模块通过回调接口暴露状态(展示成功/失败),避免强耦合

  3. 集中管理
    设备信息统一在工具类中获取,避免代码重复

  4. 兼容性处理
    设备信息获取需考虑不同 API 版本的差异(如使用 BuildCompat

  5. 生命周期管理
    广告对象持有 Application Context 防止内存泄漏


注意事项:

根据您的具体场景选择封装方式,也可结合两者(如设备信息 + 广告个性化)。

PCB设计与封装指导白皮书合集

资料简介: 本书内容为规定公司所有设计PCB板器件封装的命名与设计规范度,保证公司设计的PCB板器件使用的统一性,便于对所有设计的PCB可靠性进行监控,也便于对PCB审核与归档。本文档规定元器件封装

资料下载 elecfans小能手 2022-09-23 16:00:42

AD原理图库与封装下载

AD原理图库与封装下载

资料下载 ChenGuanQing 2022-01-17 10:19:03

PCB封装设计步骤PPT课件下载

PCB封装设计步骤PPT课件下载

资料下载 ah此生不换 2021-09-02 16:09:44

常见的电子元器件和芯片封装类型

芯片的世界封装类型太多了,这里总结了70多种常见的芯片封装。希望能让你对封装有一个大概的了解。

资料下载 h1654156022.3134 2021-04-22 09:14:41

70种电子元器件及芯片封装类型资源下载

芯片的世界封装类型太多了,这里总结了70多种常见的芯片封装。希望能让你对封装有一个大概的了解。

资料下载 王国杰 2021-04-17 09:42:49

7天热门专题 换一换
相关标签