Java 如何在我的应用程序和服务器之间同步时间?

Java 如何在我的应用程序和服务器之间同步时间?,java,android,random,Java,Android,Random,下面的代码每30秒生成7个随机数字 public class MainActivity extends Activity { Timer timeoutTimer; final Random myRandom = new Random(); GenerateTask genTask = new GenerateTask(); static String RAN_TEXT = "text"; class GenerateTask extends TimerTask { boolean

下面的代码每30秒生成7个随机数字

public class MainActivity extends Activity {

Timer timeoutTimer;
final Random myRandom = new Random();
GenerateTask genTask = new GenerateTask();
static String RAN_TEXT = "text";

class GenerateTask extends TimerTask {
    boolean started = false;
    public void run() {
        if (started) {
            System.out.println("generating");
            final TextView textGenerateNumber = (TextView)findViewById(R.id.generatenumber);



           RAN_TEXT = "";

            for(int k=0;k<7;k++){
                RAN_TEXT += myRandom.nextInt(10) + " ";
            }
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    textGenerateNumber.setText(RAN_TEXT);
                }
            });
        }
    }
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);




     Button buttonGenerate = (Button)findViewById(R.id.generateme);


    buttonGenerate.setOnClickListener(new OnClickListener(){

         @Override
         public void onClick(View v) {
             System.out.println("click");
             if (!genTask.started) {
                 genTask.started=true;
                 timeoutTimer = new Timer();
                 timeoutTimer.scheduleAtFixedRate(genTask, 0, 30000);
             } else {
                 genTask.started=false;
                 timeoutTimer.cancel();
             }
         }
     });  
 }
}

如何将服务器时间同步到应用程序

为此,您必须使用Http连接

请参阅下面的代码

public long getCurrentTimeFromServer() {

    long serverTime = 0;
    HttpClient httpclient = new DefaultHttpClient();
    HttpGet httpget = new HttpGet(
            "your url");
    HttpResponse response;
    try {
        response = httpclient.execute(httpget);
        // Examine the response status
        // Get hold of the response entity
        HttpEntity entity = response.getEntity();
        // If the response does not enclose an entity, there is no need
        // to worry about connection release

        if (entity != null) {

            // A Simple JSON Response Read
            InputStream instream = entity.getContent();
            String result = Utilities.convertinputStreamToString(instream);
            serverTime = Long.parseLong(result);
            // now you have the string representation of the HTML request
            instream.close();
        }

    } catch (Exception e) {
        Log.e("tag", "error", e);
    }

    return serverTime;
}

为了实现您的目标,您首先需要从服务器获取正确的时间。我认为在服务器端,您有wsdl,因此在客户端(您的应用程序),您需要创建一个流程,该流程将连接到服务器并获取时间

关于如何做到这一点,请点击此处:


之后,您将在应用程序的本地拥有正确的时间,您将能够利用该时间执行任何操作。

我是否需要为该代码创建另一个java类?对于URL,我只是粘贴这个()对吗?我想你需要创建webservice类型,它将返回服务器时间。嗯,好的,但我不知道怎么做?那么上面的代码呢?
public long getCurrentTimeFromServer() {

    long serverTime = 0;
    HttpClient httpclient = new DefaultHttpClient();
    HttpGet httpget = new HttpGet(
            "your url");
    HttpResponse response;
    try {
        response = httpclient.execute(httpget);
        // Examine the response status
        // Get hold of the response entity
        HttpEntity entity = response.getEntity();
        // If the response does not enclose an entity, there is no need
        // to worry about connection release

        if (entity != null) {

            // A Simple JSON Response Read
            InputStream instream = entity.getContent();
            String result = Utilities.convertinputStreamToString(instream);
            serverTime = Long.parseLong(result);
            // now you have the string representation of the HTML request
            instream.close();
        }

    } catch (Exception e) {
        Log.e("tag", "error", e);
    }

    return serverTime;
}