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}},在官网上找到这个
随机推荐
- Tensorboard教程:Tensorflow命名空间与计算图可视化
Tensorflow命名空间与计算图可视化 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 强烈推荐Tensorflow实战Google深度学习框架 实验平台: Tensorflow ...
- 782E. Underground Lab DFS 好题
Link 题意:给出一个图,有n个点,m条边,k个人,每个人至多只能走$\lceil\frac{2n}{k}\rceil$步,输出可行的方案即输出每个人所走的步数和所走点 思路: 由于保证给出的是连通 ...
- fastreport中文乱码问题
fastreport的中文乱码问题,确实让人头疼,我使用的是delphi6+fastrepport4.7,在4.7版本中,主要表现在以下几种情况. 预览不乱码,保存乱码. 简体不乱码,繁体乱码. 简体 ...
- HEXO与Github.io搭建个人博客
HEXO与Github.io搭建个人博客 HEXO搭建 HEXO是基于Node.JS的一款简单快速的博客框架,能够支持多线程,支持markdown,可以将生成的静态网页发布到github.io以 ...
- Python :集合类型(set)
set 是一个无序的元素集合,支持并.交.差及对称差等数学运算, 但由于 set 不记录元素位置,因此不支持索引.分片等序列的操作. 一.初始化 s0 = set() d0 = {} s1 = {0} ...
- 在Java中,你真的会日期转换吗
1.什么是SimpleDateFormat 在java doc对SimpleDateFormat的解释如下: SimpleDateFormat is a concrete class for form ...
- HDU 2050 折线分割平面 (数学)
题目链接 Problem Description我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目.比如,一条折线可以将平面分成两部分,两条折线最多可 ...
- koa通过get请求获取参数
1.通过get方式请求获取参数的方式有两种 通过上下文获取 通过request获取 获得的格式有两种:query与querystring 注意:querystring为小写,驼峰格式会导致无法获取 2 ...
- 搭建linux+nginx+mysql+php环境
yum install -y gcc gcc-c++ make zlib zlib-devel pcre pcre-devel libjpeg libjpeg-devel libpng libpn ...
- Linux中fork()函数的底层实现【转】
转自:http://blog.csdn.net/duoru_xiong/article/details/76358812 1. fork(),vfork(),clone()的区别 这三个系统调用的底层 ...