App启动广告

需求:

App启动的时候获得广告图片链接,如果已经存在,判断是否和本地的相同,不相同才去下载到本地。

流程图:

这些都在广告页的前一个页面操作(logo页或者Application)

import android.content.Intent;
import android.text.TextUtils;

import com.xuehu365.xuehu.R;
import com.xuehu365.xuehu.business.SplashImgDownLoader;
import com.xuehu365.xuehu.data.UserData;
import com.xuehu365.xuehu.model.response.AdResponseEntity;
import com.xuehu365.xuehu.netinterface.AdAPI;
import com.xuehu365.xuehu.netinterface.retrofit.BaseCallBack;

import java.util.Timer;
import java.util.TimerTask;

import retrofit2.Response;

public class LogoActivity extends BaseFragmentActivity {

    @Override
    protected Object getCotentView() {
        return R.layout.activity_logo;
    }

    @Override
    protected void initView() {
        super.initView();
        checkAdUrl();
        jump();
    }

    private void checkAdUrl() {
        AdAPI.getAd(new BaseCallBack<AdResponseEntity>() {
            @Override
            public void onSuccess(Response<AdResponseEntity> response) {
                AdResponseEntity.Data data = response.body().getData();
                if (null == data) {
                    return;
                }
                String url = data.getUrl();
                if (TextUtils.isEmpty(url)) {
                    return;
                }
                String localAd = UserData.getAdBitmap();
                if (!TextUtils.isEmpty(localAd)) {
                    String urlFileName = url.substring(url.lastIndexOf("/") + 1);
                    String localFileName = localAd.substring(localAd.lastIndexOf("/") + 1);
                    if (urlFileName.equals(localFileName)) {
                        return;
                    }
                }
                SplashImgDownLoader.downLoad(url);
            }
        });
    }

    private void jump() {
        final Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                if (null != timer) {
                    timer.cancel();
                    startActivity(new Intent(LogoActivity.this, SplashActivity.class));
                    finish();
                }
            }
        }, 1000);
    }
}
import com.liulishuo.filedownloader.BaseDownloadTask;
import com.liulishuo.filedownloader.FileDownloadListener;
import com.liulishuo.filedownloader.FileDownloader;
import com.xuehu365.xuehu.data.UserData;
import com.xuehu365.xuehu.utils.PathUtil;

import java.io.File;

/**
 * Created by Administrator on 2017/8/8.
 */
public class SplashImgDownLoader {
    public static void downLoad(String url) {
        String fileName = url.substring(url.lastIndexOf("/") + 1);
        String filePath = PathUtil.getInstance().getImagePath() + File.separator + fileName;
        BaseDownloadTask task = FileDownloader.getImpl().create(url).setPath(filePath).setListener(new FileDownloadListener() {
            @Override
            protected void pending(BaseDownloadTask task, int soFarBytes, int totalBytes) {

            }

            @Override
            protected void progress(BaseDownloadTask task, int soFarBytes, int totalBytes) {

            }

            @Override
            protected void completed(BaseDownloadTask task) {
                UserData.saveAdBitmap(task.getPath());
            }

            @Override
            protected void paused(BaseDownloadTask task, int soFarBytes, int totalBytes) {

            }

            @Override
            protected void error(BaseDownloadTask task, Throwable e) {

            }

            @Override
            protected void warn(BaseDownloadTask task) {

            }
        });
        task.start();
    }
}

然后,广告页只需要去本地拿地址然后加载就可以了

时间: 2024-10-08 15:04:24

App启动广告的相关文章

分分钟解决iOS开发中App启动广告的功能

前不久有朋友需要一个启动广告的功能,我说网上有挺多的,他说,看的不是很理想.想让我写一个,于是乎,抽空写了一个,代码通俗易懂,简单的封装了一下,各种事件用block回调的,有俩种样式的广告,一种是全屏广告,另一种是下面露logo的,类似网页新闻的启动广告.依赖SDWebImage主要用来下载网络的广告图片,一般项目里面网络图片都用的这个框架,所以在此不做过多的阐述.下面让我们来看看我封装的过程,对于新手来说,可以学习一下这种封装的思想. 1.首先建一个继承View的LBLaunchImageAd

Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法(转)

转载: Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法   首先感谢博主分享,本文作为学习记录 惊鸿一瞥 微信的启动页,相信大家都不陌生. 不知道大家有没有发现一个现象,微信每次启动的时候,是直接进入这个启动页面. 我的意思是,很多应用,往往会先白屏停顿一下后再进入启动页面(Splash).为了印证这一点,我把手机上所有的App都点了一遍.选几个例子 如下图: 微信:  斗鱼:  斗鱼和微信是直接进入了,他们的Splash页面. 知乎:  B站:  知乎和B站要先

一触即发——App启动优化最佳实践

一触即发 App启动优化最佳实践 文中的很多图都是Google性能优化指南第六季中的一些截图 Google给出的优化指南来镇楼 https://developer.android.com/topic/performance/launch-time.html 闪屏定义 Android官方的性能优化典范,从第六季开始,发起了一系列针对App启动的优化实践,地址如下: https://www.youtube.com/watch?v=Vw1G1s73DsY&index=74&list=PLWz5r

Android中静态方式破解某App实现所有视频app去除广告功能

作为一个屌丝程序猿也有追剧的时候,但是当打开视频app的时候,那些超长的广告已经让我这个屌丝无法忍受了,作为一个程序猿看视频还要出现广告那就是打我脸,但是我有没有钱买会员,只能靠着毕生技能去耍耍去除广告了.下面就来介绍一下如何进行视频广告的去除. 一.视频广告播放原理 首先我们需要了解的一个基本知识点那就是广告其实也是一段视频,那么他肯定有请求地址和播放地址.那么我们的思路就来了,如果能够得到这些地址的话,我们就可以去除广告了,为什么呢?因为我们知道所有的网络请求最终会走系统的hosts文件,在

一触即发 App启动优化最佳实践

一触即发 App启动优化最佳实践 本文在 DiyCode 和 CSDN个人博客 同时首发,关注作者的 DiyCode帐号 或者 作者微博 可第一时间收到新文章推送. 文中的很多图都是Google性能优化指南第六季中的一些截图 Google给出的优化指南来镇楼 https://developer.android.com/topic/performance/launch-time.html 闪屏定义 Android官方的性能优化典范,从第六季开始,发起了一系列针对App启动的优化实践,地址如下: h

巧用数据统计,十秒预估APP的广告收入

巧用数据统计,十秒预估APP的广告收入 移动广告发展多年,各种形式层出不穷,近期创收的热门当属插屏广告了,目前国内有米等广告商都比较快地推出了插屏广告.但许多开发者特别是刚刚接触这一领域的新手,对自己的APP使用插屏广告的收入没有把握,不知道收入能到一个什么样的水平.     其实结合移动数据统计工具提供的数据,可以非常直观地估算出自己的APP使用插屏广告的收入,下面我把详细步骤和大家说说: 1.首先你的应用需要加入数据统计分析的功能,如果没有,那么就去加一个,此类服务国内有不少提供商,均提供了

Android AnimationDrawable动画与APP启动引导页面

Android AnimationDrawable动画与APP启动.加载引导页面(画面) AnimationDrawable是Android的Frame动画,可以简单的认为此AnimationDrawable能够将一系列资源图片加载成"电影"一样播放.当下,在一些APP中,往往需要在APP切入主题之前加载一些引导页面(宣传海报.装饰画面.赞助商广告等等),这些内容要两个共同特点: (1)不是APP的重点内容,而仅仅只是像展台一样展览一些画面. (2)前.当前.后页面基本上无特别需要处理

[FMX] Android APP 启动黑屏优化补丁

使用说明 *************************************************** Android APP 启动黑屏优化补丁 作者: Swish, YangYxd 2016.01.16 Version: 1.0.0 QDAC官方群: 250530692 *************************************************** [安装方式] 双击Setup.bat安装补丁文件(安装时会作备份) 双击Uninstall.bat可以恢复. [

App启动优化

现在微信小程序火爆异常,各种demo层出不穷,笔者也不免俗,一直有关注,虽然不是微信的死忠,但是不得不佩服微信的野心.开发难度不高再加上微信生态,感觉这个东西正式进入市场后必定对原生开发造成一定的影响,特别是一些创业公司因为考虑到原生开发的高成本,微信小程序不失为一种高效的途径.建议大家也保持关注,并进行一些基础的尝试. 好了,言归正传.最近公司的一款产品应为启动时间过长,所以做了一定的优化,而笔者有幸参与,现在主要记录一下实践过程. 通常来说,启动方式分为两种:冷启动和热启动. 1.冷启动:当