Java 在一段时间后重复调用webservice
有谁能告诉我如何在每段时间内重复调用Web服务(例如,我想每5分钟调用一次Web服务)。 在我的应用程序中,我有一个微调器,允许用户选择需要刷新多少分钟的Web服务。这是我用倒计时写的代码 在这里,我编写了这样的逻辑:当选择微调器中的“donot refresh”时,计时器应该停止。一旦我选择了除第一个项目以外的任何项目,然后如果我选择了第一个项目(即,不要刷新),计时器就不会停止。这里我在onfinish()方法中调用ws来获得重复调用Java 在一段时间后重复调用webservice,java,android,timer,Java,Android,Timer,有谁能告诉我如何在每段时间内重复调用Web服务(例如,我想每5分钟调用一次Web服务)。 在我的应用程序中,我有一个微调器,允许用户选择需要刷新多少分钟的Web服务。这是我用倒计时写的代码 在这里,我编写了这样的逻辑:当选择微调器中的“donot refresh”时,计时器应该停止。一旦我选择了除第一个项目以外的任何项目,然后如果我选择了第一个项目(即,不要刷新),计时器就不会停止。这里我在onfinish()方法中调用ws来获得重复调用 private String[] refreshtim
private String[] refreshtimes = { "do not refresh","1 minute Refresh", "5minute Refresh",
"15 minute Refresh", "30 minute Refresh", "45 min Refresh",
"60 minute Refresh" };
sp_refresh = (Spinner) findViewById(R.id.refresh);
ArrayAdapter<String> spdptr = new ArrayAdapter<String>(
getApplicationContext(), android.R.layout.simple_spinner_item,
refreshtimes);
sp_refresh.setAdapter(spdptr);
sp_refresh.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View v,
int position, long id) {
if(position!=0 )
{
int time=0;
switch (position) {
case 1:
time=1;
break;
case 2:
time=5;
break;
case 3:
time=15;
break;
case 4:
time=30;
break;
case 5:
time=45;
break;
case 6:
time=60;
break;
default:
break;
}
counter = new MyCount(time*1000,1000);
counter.start();
}
else if(position==0&&counter!=null)
{
counter.cancel();
counter=null;
Toast.makeText(getApplicationContext(), "u r in elsee",10000).show();
}
}
public class MyCount extends CountDownTimer{
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
// tv.setText("done!");
callservice();
Toast.makeText(getApplicationContext(), "hi..",10000).show();
//onCreate(savedInstanceState);
this.start();
}
@Override
public void onTick(long millisUntilFinished) {
// tv.setText("”Left: " + millisUntilFinished/1000);
Toast.makeText(getApplicationContext(), "Left: " + millisUntilFinished/1000,10000).show();
}
}
private String[]refreshttimes={“不刷新”、“1分钟刷新”、“5分钟刷新”,
“15分钟刷新”、“30分钟刷新”、“45分钟刷新”,
“60分钟刷新”};
sp_refresh=(微调器)findviewbyd(R.id.refresh);
ArrayAdapter spdptr=新的ArrayAdapter(
getApplicationContext(),android.R.layout.simple\u微调器\u项,
刷新次数);
sp_刷新设置适配器(spdptr);
sp_refresh.setOnItemSelectedListener(新的OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图v、,
内部位置,长id){
如果(位置!=0)
{
整数时间=0;
开关(位置){
案例1:
时间=1;
打破
案例2:
时间=5;
打破
案例3:
时间=15;
打破
案例4:
时间=30;
打破
案例5:
时间=45;
打破
案例6:
时间=60;
打破
违约:
打破
}
计数器=新的MyCount(时间*10001000);
counter.start();
}
else if(位置==0&&counter!=null)
{
counter.cancel();
计数器=空;
Toast.makeText(getApplicationContext(),“elsee中的u r”,10000.show();
}
}
公共类MyCount扩展了倒计时{
公共MyCount(长百万未来,长倒计时间隔){
超级(毫秒未来,倒计时间隔);
}
@凌驾
公共无效onFinish(){
//tv.setText(“完成!”);
callservice();
Toast.makeText(getApplicationContext(),“hi..”,10000.show();
//onCreate(savedInstanceState);
这个。start();
}
@凌驾
公共void onTick(长毫秒未完成){
//tv.setText(““左:”+millisuntillfinished/1000);
Toast.makeText(getApplicationContext(),“Left:+millisuntiltfinished/100010000).show();
}
}
您可以使用java类重复执行方法
另请参阅:,它使用TimerTask计划任务。请尝试下面的代码
package com.Test_dia;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
public class Test_diaActivity extends Activity {
String[] refreshtimes = { "do not refresh", "1 minute Refresh",
"5minute Refresh", "15 minute Refresh",
"30 minute Refresh", "45 min Refresh", "60 minute Refresh" };
private Spinner Spi;
private int time;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Spi = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<String> spdptr = new ArrayAdapter<String>(
getApplicationContext(), android.R.layout.simple_spinner_item,
refreshtimes);
Spi.setAdapter(spdptr);
Spi.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int position, long arg3) {
// TODO Auto-generated method stub
if (position > 0) {
switch (position) {
case 1:
time = 1;
break;
case 2:
time = 5;
break;
case 3:
time = 15;
break;
case 4:
time = 30;
break;
case 5:
time = 45;
break;
case 6:
time = 60;
break;
default:
break;
}
call_timmer(time);
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}
private void call_timmer(int i) {
// TODO Auto-generated method stub
int t = i * 60000;
Timer myt = new Timer();
myt.schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
timerMethod();
}
}, 0, 60000);
}
private void timerMethod() {
this.runOnUiThread(doSomething);
}
private Runnable doSomething = new Runnable() {
public void run() {
// Your code for doing something
Toast.makeText(Test_diaActivity.this, "dhaval Sodha Parmar",
Toast.LENGTH_LONG).show();
}
};
}
package com.Test\u dia;
导入java.util.Timer;
导入java.util.TimerTask;
导入android.app.Activity;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.AdapterView.OnItemSelectedListener;
导入android.widget.ArrayAdapter;
导入android.widget.Spinner;
导入android.widget.Toast;
公共类测试活动扩展了活动{
字符串[]刷新次数={“不刷新”,“1分钟刷新”,
“5分钟刷新”、“15分钟刷新”,
“30分钟刷新”、“45分钟刷新”、“60分钟刷新”};
私人纺纱机;
私人整数时间;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Spi=(微调器)findViewById(R.id.spinner1);
ArrayAdapter spdptr=新的ArrayAdapter(
getApplicationContext(),android.R.layout.simple\u微调器\u项,
刷新次数);
Spi.setAdapter(spdptr);
setOnItemSelectedListener(新的OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView arg0、视图arg1、,
整数位置,长arg3){
//TODO自动生成的方法存根
如果(位置>0){
开关(位置){
案例1:
时间=1;
打破
案例2:
时间=5;
打破
案例3:
时间=15;
打破
案例4:
时间=30;
打破
案例5:
时间=45;
打破
案例6:
时间=60;
打破
违约:
打破
}
打电话给蒂默(时间);
}
}
@凌驾
未选择公共无效(AdapterView arg0){
//TODO自动生成的方法存根
}
});
}
私人无效通话时间(int i){
//TODO自动生成的方法存根
int t=i*60000;
定时器myt=新定时器();
myt.时间表(新TimerTask(){
@凌驾
公开募捐{
//TODO自动生成的方法存根
timerMethod();
}
}, 0, 60000);
}
私有void timerMethod(){
这个。runOnUiThread(doSomething);
}
private Runnable doSomething=new Runnable(){
公开募捐{
/