方式一: 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 minutes
private 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);
};
}; @Override
protected 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();
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
} Runnable m_handlerTask = new Runnable() {
@Override
public 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; @Override
protected 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");
} @Override
public 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;
} @Override
protected void onPreExecute() {
super.onPreExecute();
} @Override
protected 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;
} @Override
protected void onPostExecute(Integer result) {
super.onPostExecute(result);
mInnerTextView.setText("已完成!");
} @Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
System.out.println("onSynth onProgress : " + values[0]);
mInnerProgressBar.setProgress(values[0]);
mInnerTextView.setText(values[0] + "%");
} }

android 定时请求(两种实现方式)的更多相关文章

  1. cron 定时任两种配置方式

    第一种:xml文件方式 <bean id="commonTimer" class="com.course.wx.timer.CommonTimer"> ...

  2. PHP+ajax聊天室源码!支持长轮循跟定时请求两种

      var lastID = "1";//声明上次取回的消息的ID var isposted = false; var mGetTime;//设置setTimeout的返回值 // ...

  3. Oozie与Coordinator调度讲解及系统时区配置与定时触发两种配置方式

    1:修改本地linux时区 查看时区 - 号代表西  + 号 代表东 北京时间是东八区 设置时区的配置文件所在位置 cd /usr/share/zoneinfo/ 选择以亚洲的上海 的时区为基址 删除 ...

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

    今天要说的干货是:以Kotlin,在MVP模式下(OKHttp和 Retrofit+RxJava)网络请求两种实现方式的一个小案例,希望对大家有所帮助,效果图: Retrofit是Square公司开发 ...

  5. Android中BroadcastReceiver的两种注册方式(静态和动态)详解

    今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来 ...

  6. Android中Fragment与Activity之间的交互(两种实现方式)

    (未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如 ...

  7. Android 常用UI控件之TabHost(1)TabHost的两种布局方式

    TabHost是Android中的tab组件. TabHost布局文件的基本结构 TabHost下有个layout,这个layout中有TabWidget与FrameLayout.TabWidget是 ...

  8. android环境下两种md5加密方式

    在平时开发过程中,MD5加密是一个比较常用的算法,最常见的使用场景就是在帐号注册时,用户输入的密码经md5加密后,传输至服务器保存起来.虽然md5加密经常用,但是md5的加密原理我还真说不上来,对md ...

  9. Android Activity 的四种启动模式 lunchMode 和 Intent.setFlags();singleTask的两种启动方式。

    原文:Android Activity 的四种启动模式 lunchMode 和 Intent.setFlags();singleTask的两种启动方式. Android Activity 的四种启动模 ...

  10. Xamarin Android Fragment的两种加载方式

    android Fragment的重点: 3.0版本后引入,即minSdk要大于11 Fragment需要嵌套在Activity中使用,当然也可以嵌套到另外一个Fragment中,但这个被嵌套的Fra ...

随机推荐

  1. 【转】django的ORM操作数据库样例

    这个算是我看到的大全了,希望可以解决明天我希望解决的两个问题... class Blog(models.Model): name = models.CharField(max_length=100) ...

  2. WebService:设置服务器提供SOAP1.2的服务

    1,访问通过cxf发布的服务 (1)与之前一样,同样可以通过在本地通过wsdl文件和命令行生成Java文件来访问服务. 但是我们既然使用了cxf发布,就要通过cxf的工具生成访问.可以通过cxf目录的 ...

  3. iframe详细用法

    <iframe>是框架的一种形式,也比较常用到. 例子1.<iframe width=420 height=330 frameborder=0 scrolling=auto src= ...

  4. 【POJ】2528 Mayor's posters

    离散化+线段树.数组开的不够大,wa了N多回. #include <iostream> #include <cstdio> #include <cstring> # ...

  5. [LeetCode#116]Fraction to Recurring Decimal

    Problem: Given two integers representing the numerator and denominator of a fraction, return the fra ...

  6. Android应用连接代理服务器状况监测解决

    最近项目里面有这样一个需求,由于项目涉密需要连接VPN通过网址映射去登录内部服务器,而且要通知客户vpn的连接状态.网上有许多类似的连接VPN的解决方案,我也尝试了很多种,下面先列出一种比较靠谱的方式 ...

  7. (转载)函数:mysqli_query和mysql_query有何区别?

    (转载)http://wzan315.blog.163.com/blog/static/37192636201241732045299/ Mysqli.dll是一个允许以对象的方式或者过程操作数据库的 ...

  8. TimePicker,TimePickerDialog以及自定义timepicker(一)

    场景:在activity上点击,弹出一个dialog,然后点击dialog上的一个按钮,在弹出时间.以及自定义dialog 懒,要用到一个选择时间的需求,只要求小时和分钟,弹出式,第一时间想到了tim ...

  9. page-object使用(3)---元素嵌套

    很可能我们要定位的元素位于其他的元素里面,所有的元素都有一个*_element方法需找元素自身的上下文.例如,如果我想找一个unordered_list嵌套在一个div里面,可以这么做: div(:e ...

  10. Unity3d 基于物理渲染Physically-Based Rendering之最终篇

    前情提要: 讲求基本算法 Unity3d 基于物理渲染Physically-Based Rendering之specular BRDF plus篇 Unity3d 基于物理渲染Physically-B ...