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(); } }
然后,广告页只需要去本地拿地址然后加载就可以了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2016-08-08 Android 弹出对话框Dialog充满屏幕宽度