package com.base.locationsharewhite.ads

import android.app.Activity
import android.content.Context
import java.lang.ref.WeakReference

/**
 * 特定广告管理基类
 * @param T  缓存广告的类
 */
abstract class BaseAdMgr<T> {

    /**
     * 广告展示回调
     */
    protected var showCallBack: AdsShowCallBack? = null

    /**
     * 当前缓存的广告
     */
    protected var currentAd: T? = null

    /**
     * 是否正在缓存加载广告
     */
    protected var loadingAd: Boolean = false

    /**
     * 是否正在显示广告
     */
    protected var showingAd: Boolean = false

    /**
     * 用于保存引用现有页面，在此页面显示广告(因为要等待广告加载完毕)
     */
    protected var activityRef: WeakReference<Activity>? = null

    /**
     * 上一次的缓存成功时间
     */
    protected var lastTime: Long = 0


    /**
     * 预加载广告
     *
     * @param context 加载所用的上下文，一般使用appContext
     */
    abstract fun loadAd(context: Context)

    /**
     * 广告显示
     *
     * @param activity 当前页面
     */
    abstract fun show(activity: Activity, showCallBack: AdsShowCallBack? = null)


    /**
     * 预加载的缓存超时判断
     *
     * @return  true：没有超时    false：超时需要重新加载
     */
    abstract fun adAvailable(): Boolean
}