Java 如何在我的应用程序和服务器之间同步时间?
下面的代码每30秒生成7个随机数字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
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;
}