2016-03-03 4 views
0

У меня есть это условие, чтобы написать вызов сервера, который выполняется каждые 50 мс. Звонок сервера должен быть от волейбола. Но трудность, с которой я сталкиваюсь, - это каждый вызов сервера, имеет разные URL-адреса и как передавать эти разные URL-адреса в потоке, чтобы вызвать сервер каждые 50 мс.?Выполнение различных операций в Thread-android

+0

У вас есть список серверов, которые вы должны вызывать последовательно, по одному каждые 50 мс, или вы должны называть их каждые каждые 50 мс? –

+0

Похоже, вы пытаетесь DDOS-кого-то – DDsix

+0

Я работаю над доской, которая будет управляться с мобильных устройств. Таким образом, в соответствии с требованием, эти постоянные вызовы сервера будут выполнены, и эти команды будут отличаться, поскольку пользователь нажимает кнопку на мобильном приложении. @RaduIonescu – guerrero

ответ

0

Я не специалист по Android, но это то, о чем я мог думать, если вы хотите назвать разные URL-адреса после 50 мс. Пожалуйста, исправьте меня, если я ошибаюсь :)

import android.app.AlertDialog; 
import android.app.Dialog; 
import android.app.ProgressDialog; 
import android.content.DialogInterface; 
import android.os.AsyncTask; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 

import java.io.BufferedReader; 
import java.io.DataOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.net.URLEncoder; 
import java.util.concurrent.Executors; 
import java.util.concurrent.ScheduledExecutorService; 
import java.util.concurrent.TimeUnit; 

public class MainActivity extends AppCompatActivity { 
    private static final ScheduledExecutorService worker = Executors.newSingleThreadScheduledExecutor(); 
    int i=0; 
    final String[] urlArray = new String[]{"http://google.com","http://fb.com"};//your url array here 

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

     Runnable task = new Runnable() { 
      public void run() { 
       String currentURL= MainActivity.this.getNextURL(); 
       new HitWebService().execute(currentURL); 
      } 
     }; 
     worker.schedule(task, 50, TimeUnit.SECONDS); 
    } 

    private String getNextURL(){ 
     String currentURL= urlArray[i]; 
     if(i == urlArray.length){ 
      i=0; 
     } 
     else{ 
      i++; 
     } 
     return currentURL; 
    } 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

    private class HitWebService extends AsyncTask<String,Void,String> { 

     protected void onPreExecute(){ 
      //do whatever you want with respect to ui 
     } 

     @Override 
     protected String doInBackground(String... params){ 
      HttpURLConnection connection=null; 
      String stringUrl= params[0]; 
      try { 
       URL url= new URL(stringUrl); 
       connection=(HttpURLConnection)url.openConnection(); 
       connection.setRequestMethod("POST"); 
       connection.setDoInput(true); 
       connection.setDoOutput(true); 
       connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 

       DataOutputStream outputStream=new DataOutputStream(connection.getOutputStream()); 
       String parameters = "initialise your parameters here, pass parameters also in params and access it like params[1]"; 

       outputStream.writeBytes(parameters); 
       outputStream.flush(); 
       outputStream.close(); 

       InputStream inputStream=connection.getInputStream(); 
       BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream)); 
       StringBuffer response = new StringBuffer(); 
       String line; 
       while((line=bufferedReader.readLine())!=null){ 
        response.append(line); 
       } 

       bufferedReader.close(); 
       return response.toString(); 
      } 
      catch (MalformedURLException malformedException){ 
       return malformedException.toString(); 
      } 
      catch (IOException ioException){ 
       return ioException.toString(); 
      } 
      finally { 
       if(connection !=null){ 
        connection.disconnect(); 
       } 
      } 
     } 

     @Override 
     protected void onPostExecute(String response){ 
      //do whatever you want here 
     } 
    } 
} 
+0

Это не совсем то, что я искал, но это дало мне направление для того, что делать. Благодарю. @ sandeep-bhandari – guerrero

+0

всегда приветствую сэр :) С удовольствием могу помочь :) –

Смежные вопросы