Java 在一段时间后重复调用webservice

Java 在一段时间后重复调用webservice,java,android,timer,Java,Android,Timer,有谁能告诉我如何在每段时间内重复调用Web服务(例如,我想每5分钟调用一次Web服务)。 在我的应用程序中,我有一个微调器,允许用户选择需要刷新多少分钟的Web服务。这是我用倒计时写的代码 在这里,我编写了这样的逻辑:当选择微调器中的“donot refresh”时,计时器应该停止。一旦我选择了除第一个项目以外的任何项目,然后如果我选择了第一个项目(即,不要刷新),计时器就不会停止。这里我在onfinish()方法中调用ws来获得重复调用 private String[] refreshtim

有谁能告诉我如何在每段时间内重复调用Web服务(例如,我想每5分钟调用一次Web服务)。 在我的应用程序中,我有一个微调器,允许用户选择需要刷新多少分钟的Web服务。这是我用倒计时写的代码

在这里,我编写了这样的逻辑:当选择微调器中的“donot refresh”时,计时器应该停止。一旦我选择了除第一个项目以外的任何项目,然后如果我选择了第一个项目(即,不要刷新),计时器就不会停止。这里我在onfinish()方法中调用ws来获得重复调用

 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(){
公开募捐{
/