方式一: Handler + Runnable (借鉴网址:http://stackoverflow.com/questions/6207362/how-to-run-an-async-task-for-every-x-mins-in-android

    private final static int INTERVAL = 1000;  // 2 minutesprivate static final int ALL_COUNT = 5;    // 总资源数private TextView mTextView;private ProgressBar mProgressBar;private Handler mHandler = new Handler() {public void handleMessage(android.os.Message msg) {mProgressBar.setProgress(msg.what);};};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTextView = (TextView) this.findViewById(R.id.textView1);mProgressBar = (ProgressBar) this.findViewById(R.id.progressBar2);startRepeatingTask();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}Runnable m_handlerTask = new Runnable() {@Overridepublic void run() {int count = doSomething();if (count <= ALL_COUNT) {mHandler.sendEmptyMessage((int) ((count / (float) ALL_COUNT)*100));mHandler.postDelayed(m_handlerTask, INTERVAL);} else {stopRepeatingTask();}}};private int mCount = -1;/*** 此处调用 接口* @return*/private int doSomething() {mCount = mCount + 1;return mCount;}void startRepeatingTask() {m_handlerTask.run();}/*** 此处 结束*/void stopRepeatingTask() {mTextView.setText("合成完成!");mHandler.removeCallbacks(m_handlerTask);}

方式二:AsyncTask

    private TextView mTextView;private ProgressBar mProgressBar;private SynthesisProgressTask mSynthesisProgressTask;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTextView = (TextView) this.findViewById(R.id.textView1);mProgressBar = (ProgressBar) this.findViewById(R.id.progressBar2);mSynthesisProgressTask = new SynthesisProgressTask(mProgressBar, mTextView);mSynthesisProgressTask.execute("url");}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}private class SynthesisProgressTask extends AsyncTask<String, Integer, Integer> {private static final int ALL_MEDIA_COUNT = 10;private boolean isSynthesisFinished = false;private ProgressBar mInnerProgressBar;private TextView mInnerTextView;public SynthesisProgressTask(ProgressBar progressBar, TextView textView) {this.mInnerProgressBar = progressBar;this.mInnerTextView = textView;}@Overrideprotected void onPreExecute() {super.onPreExecute();}@Overrideprotected Integer doInBackground(String... params) {int i = -1;while (!isSynthesisFinished) {synchronized (this) {i = i + 1;if (i == ALL_MEDIA_COUNT) {isSynthesisFinished = true;}publishProgress((int) ((i / (float) ALL_MEDIA_COUNT) * 100));try {wait(1000);} catch (InterruptedException e) {e.printStackTrace();}}}return i;}@Overrideprotected void onPostExecute(Integer result) {super.onPostExecute(result);mInnerTextView.setText("已完成!");}@Overrideprotected void onProgressUpdate(Integer... values) {super.onProgressUpdate(values);System.out.println("onSynth onProgress : " + values[0]);mInnerProgressBar.setProgress(values[0]);mInnerTextView.setText(values[0] + "%");}}

转载于:https://www.cnblogs.com/nmj1986/p/3175129.html

android 定时请求(两种实现方式)相关推荐

  1. android启动服务的生命周期,Android Service的两种启动方式以及生命周期

    Service的两种启动方式: 1.startService 2.bindService 注意: .在Android 5.0之后google出于安全的角度禁止了隐式声明Intent来启动Service ...

  2. 【环信集成指北】Android SDK 的两种导入方式

    环信AndroidSDK官网文档提供了两种导入方式:线上gradle远程连接导入和本地导入,线上导入方便快捷,本地导入较为灵活. 一.线上gradle远程连接导入 线上导入方便快捷,直接使用环信最新版 ...

  3. Android service的两种使用方式bindService和startService使用方式

    服务与多线程的区别: 服务仍然是运行在主线程中,而Thread则是真正的开启了一个新的线程来执行先关操作. 那为什么要用服务呢,初步理解是服务是为了更好地管理线程.试想,当我们在某一个activity ...

  4. Android中启动一个服务,Android服务的两种启动方式

    前言:Service是Android的四大组件之一,也是可执行的程序.服务是Android中实现程序后台运行的解决方案,非常适合去执行那些不需要和用户交互而且还要求长期运行的任务.Service的启动 ...

  5. Android Studio Gradle两种更新方式

    第一种.Android Studio自动更新 第一步:修改gradle版本 修改项目根目录/gradle/wrapper/gradle-wrapper.properties最后一行的地址: distr ...

  6. kotlin for android----------MVP模式下(OKHttp和 Retrofit+RxJava)网络请求的两种实现方式...

    2019独角兽企业重金招聘Python工程师标准>>> 今天要说的干货是:以Kotlin,在MVP模式下(OKHttp和 Retrofit+RxJava)网络请求两种实现方式的一个小 ...

  7. android项目两种构建方式的整合(Eclipse/idea和Android Studio)

    android的两种构建方式 目前android主要有两种构建方式,一种基于ant(传统的),另一种是13年Google/IO上新推出基于Gralde的构建(Android Studio).从sdk的 ...

  8. android中资源文件的两种访问方式,Android_Android学习笔记-保存文件(Saving Files),Android设备有两种文件存储区域 - phpStudy...

    Android学习笔记-保存文件(Saving Files) Android设备有两种文件存储区域: 内部存储和外部存储 ("internal" and "externa ...

  9. Android方法的概括,Android_Android中startService基本使用方法概述,Android中有两种主要方式使用Ser - phpStudy...

    Android中startService基本使用方法概述 Android中有两种主要方式使用Service,通过调用Context的startService方法或调用Context的bindServi ...

  10. android密码dakay,安卓中按钮点击事件onClick的两种实现方式

    很多的语言都有一些共同的特点,比如OnClick这个东西,可能我们能在js中见到,当然在安卓中也有,可能其他的编程语言也会有这个东西,刚好今天学了这个玩意在安卓中的写法. 点击事件大多用在Button ...

最新文章

  1. c#加粗代码_RichTextBox,怎么用c#代码根据Index和Length指定的范围的内容进行变色或加粗处理?...
  2. 【Prometheus】 Prometheus 入门到实战搭建监控系统
  3. float数据类型研究,发现其能显示的有效数字极为有限
  4. 编程打开Windows服务控制管理器
  5. Android基础总结(八)Service
  6. react学习(28)---react挂载图
  7. 工具类:获取 spring 容器中 bean
  8. Qt 翻译文件的加载
  9. Java基础学习总结(114)——System之系统变量和环境变量
  10. ubuntu16.04卸载firefox,然后再次安装firefox
  11. [译]CSS3实现柱状图的3D立体动画效果
  12. 字符串 - KMP模式匹配
  13. 逻辑斯谛(Logistic)回归、参数估计教程
  14. linux 鼠标光标由箭头变成十字形恢复方法
  15. js 验证联系方式 手机号码及座机号码
  16. 无法远程连接到计算机 虚拟内存,远程桌面连接显示内存不足怎么破?
  17. 联想ThinkPad升级BIOS和EC新手教程
  18. flutter | 悬浮窗解决方案 flutter_floating
  19. 机器学习--泛化能力
  20. 规则在自然语言处理领域的重要地位

热门文章

  1. sqlserver 数据多行以逗号分隔成一行
  2. DBeaver连接SqlServer报“The server selected protocol version TLS10 is not accepted by client prefere”的错误
  3. SetConsoleTextAttribute 设置Windows控制台字体背景颜色(转载)
  4. MySQL IS NULL(IS NOT NULL)使用索引分析
  5. VS2015 ASSERT(false)直接退出不弹出Assert failed对话框的解决方法
  6. Failed to start bean ‘documentationPluginsBootstrapper‘;
  7. 软件质量管理体系 type:pdf_制造型企业构建完整的质量管理体系的思路要点
  8. 人脸图像特征提取方法(HOG、Dlib、CNN)简述
  9. 计算机机房使用多大的光纤引入,弱电施工如何确定光纤使用的芯数
  10. php java node 并发,Node、PHP、Java 和 Go 服务端 I/O 性能PK