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();
}
}
然后,广告页只需要去本地拿地址然后加载就可以了
App启动广告的更多相关文章
- 分分钟解决iOS开发中App启动广告的功能
前不久有朋友需要一个启动广告的功能,我说网上有挺多的,他说,看的不是很理想.想让我写一个,于是乎,抽空写了一个,代码通俗易懂,简单的封装了一下,各种事件用block回调的,有俩种样式的广告,一种是全屏 ...
- 一触即发 App启动优化最佳实践
一触即发 App启动优化最佳实践 本文在 DiyCode 和 CSDN个人博客 同时首发,关注作者的 DiyCode帐号 或者 作者微博 可第一时间收到新文章推送. 文中的很多图都是Google性能优 ...
- App启动页设计实例与技巧
App启动页,也称闪屏页,最初是为缓解用户等待Web/iOS/Android App数据加载的焦虑情绪而出现,后被设计师巧妙用于品牌文化展示,服务特色介绍以及功能界面熟悉等平台进行设计,被赋予了更加丰 ...
- Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法(转)
转载: Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法 首先感谢博主分享,本文作为学习记录 惊鸿一瞥 微信的启动页,相信大家都不陌生. 不知道大家有没有发现一个现象 ...
- 马蜂窝 iOS App 启动治理:回归用户体验
增长.活跃.留存是移动 App 的常见核心指标,直接反映一款 App 甚至一个互联网公司运行的健康程度和发展动能.启动流程的体验决定了用户的第一印象,在一定程度上影响了用户活跃度和留存率.因此,确保启 ...
- 【转】Android 破解视频App去除广告功能详解及解决办法总结
Android 破解视频App去除广告功能 作为一个屌丝程序猿也有追剧的时候,但是当打开视频app的时候,那些超长的广告已经让我这个屌丝无法忍受了,作为一个程序猿看视频还要出现广告那就是打我脸,但是我 ...
- iOS开发app启动原理及视图和控制器的函数调用顺序
main()函数是整个程序的入口,在程序启动之前,系统会调用exec()函数.在Unix中exec和system的不同在于,system是用shell来调用程序,相当于fork+exec+waitpi ...
- IOS (APP 启动 相应处理)
APP 每次启动的入口都是通过: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSD ...
- vue隐藏APP启动时显示的{{}}
vue隐藏APP启动时显示的{{}} vue组件在编译好之前会显示{{msg}},在官网上找到这个
随机推荐
- JS中的匿名函数自执行、函数声明与函数表达式
先看一段jQuery源码中匿名函数自执行的例子: (function( window, undefined ) { // jquery code })(window); 另外一种常见的写法: +fun ...
- 使用nginx做反向代理
很多同学喜欢用nginx做反向代理访问某些网站,原因大家都懂的,今天老高记录一下如何使用nginx做反向代理以及如何配置和优化nginx的反向代理. 准备工作 首先,你需要一个稳定的国外的便宜的VPS ...
- 2049: [Sdoi2008]Cave 洞穴勘测
2049: [Sdoi2008]Cave 洞穴勘测 Time Limit: 10 Sec Memory Limit: 259 MB Submit: 7475 Solved: 3499 [Submi ...
- HDU 1211 EXGCD
EXGCD的模板水题 RSA算法给你两个大素数p,q定义n=pq,F(n)=(p-1)(q-1) 找一个数e 使得(e⊥F(n)) 实际题目会给你e,p,q计算d,$de \mod F(n) = 1$ ...
- 如何构建一个很棒网站页脚(Website Footer)
对于很多人来说,制作页脚是只是设计师顺手而为的任务.它似乎很容易,似乎可以忽略不计.因为很多人都觉得网站底部很少人会去看,而且页脚链接的所有链接的点击率(CTR)都是最低的,何必呢? 真是这样的吗?下 ...
- uoj311 【UNR #2】积劳成疾
传送门:http://uoj.ac/problem/311 [题解] 这题的期望dp好神奇啊(可能是我太菜了) 由于每个位置都完全一样,所以我们设$f_{i,j}$表示审了连续$i$个位置,最大值不超 ...
- 【51nod】1238 最小公倍数之和 V3 杜教筛
[题意]给定n,求Σi=1~nΣj=1~n lcm(i,j),n<=10^10. [算法]杜教筛 [题解]就因为写了这个非常规写法,我折腾了3天…… $$ans=\sum_{i=1}^{n}\s ...
- 环境变量配错了 command not found
一般就是忘记在PATH 前面加$ 1.可以用whereis或者which命令查看一下有没有这个命令 具体执行which lswhereis ls 2.系统环境变量导致的问题解决方案: exportPA ...
- python基础之上下文管理器
前言 关于计算器运行的上下文的概念,我的理解也不是很深:按我的理解就是程序在运行之前,其所需要的资源,运行环境等都会被序列化,然后加入到CPU的任务队列中,等待调度系统分配时间片执行.下面谈谈pyth ...
- 004_Gradle 笔记——Java构建入门
Gradle是一个通用的构建工具,通过它的构建脚本你可以构建任何你想要实现的东西,不过前提是你需要先写好构建脚本的代码.而大部分的项目,它 们的构建流程基本是一样的,我们不必为每一个工程都编写它的构建 ...