在Thread-android中执行不同的操作

在Thread-android中执行不同的操作,android,multithreading,android-volley,timertask,Android,Multithreading,Android Volley,Timertask,我有这个条件来编写每50毫秒执行一次的服务器调用。 服务器调用必须来自截击。 但我面临的困难是,每次服务器调用都有不同的URL,如何在线程中传递这些不同的URL,以便每50毫秒调用一次服务器。我不是安卓系统的专家,但如果你想在50毫秒后调用不同的URL,我可以这样想。如果我错了,请纠正我:) 导入android.app.AlertDialog; 导入android.app.Dialog; 导入android.app.ProgressDialog; 导入android.content.Dialog

我有这个条件来编写每50毫秒执行一次的服务器调用。 服务器调用必须来自截击。
但我面临的困难是,每次服务器调用都有不同的URL,如何在线程中传递这些不同的URL,以便每50毫秒调用一次服务器。

我不是安卓系统的专家,但如果你想在50毫秒后调用不同的URL,我可以这样想。如果我错了,请纠正我:)

导入android.app.AlertDialog;
导入android.app.Dialog;
导入android.app.ProgressDialog;
导入android.content.DialogInterface;
导入android.os.AsyncTask;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.Menu;
导入android.view.MenuItem;
导入java.io.BufferedReader;
导入java.io.DataOutputStream;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.net.HttpURLConnection;
导入java.net.MalformedURLException;
导入java.net.URL;
导入java.net.urlcoder;
导入java.util.concurrent.Executors;
导入java.util.concurrent.ScheduledExecutorService;
导入java.util.concurrent.TimeUnit;
公共类MainActivity扩展了AppCompatActivity{
private static final ScheduledExecutorService worker=Executors.newSingleThreadScheduledExecutor();
int i=0;
最终字符串[]URLARY=新字符串[]{”http://google.com","http://fb.com“};//此处是您的url数组
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Runnable任务=新的Runnable(){
公开募捐{
字符串currentURL=MainActivity.this.getNextURL();
新建HitWebService().execute(当前URL);
}
};
时间表(任务,50,时间单位,秒);
}
私有字符串getNextURL(){
字符串currentURL=urlArray[i];
if(i==urlArray.length){
i=0;
}
否则{
i++;
}
返回当前URL;
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(右菜单菜单菜单主菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
//noinspection SimplifiableIf语句
if(id==R.id.action\u设置){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
私有类HitWebService扩展异步任务{
受保护的void onPreExecute(){
//对ui做任何你想做的事情
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
HttpURLConnection=null;
字符串stringUrl=params[0];
试一试{
URL URL=新URL(字符串URL);
connection=(HttpURLConnection)url.openConnection();
connection.setRequestMethod(“POST”);
connection.setDoInput(true);
connection.setDoOutput(真);
connection.setRequestProperty(“内容类型”、“应用程序/x-www-form-urlencoded”);
DataOutputStream outputStream=新的DataOutputStream(connection.getOutputStream());
String parameters=“在此处初始化参数,同时在params中传递参数,并像params[1]一样访问参数”;
outputStream.writeBytes(参数);
outputStream.flush();
outputStream.close();
InputStream InputStream=connection.getInputStream();
BufferedReader BufferedReader=新的BufferedReader(新的InputStreamReader(inputStream));
StringBuffer响应=新的StringBuffer();
弦线;
而((line=bufferedReader.readLine())!=null){
响应。追加(行);
}
bufferedReader.close();
返回response.toString();
}
捕获(异常异常异常异常异常异常异常){
返回畸形的dexception.toString();
}
捕获(IOException IOException){
返回ioException.toString();
}
最后{
if(连接!=null){
连接断开();
}
}
}
@凌驾
受保护的void onPostExecute(字符串响应){
//在这里你想干什么就干什么
}
}
}

您有一个必须按顺序调用的服务器列表,每50毫秒调用一个,或者每50毫秒调用一个?听起来好像您在尝试DDOS攻击某人我正在一个由移动设备控制的板上工作。因此,根据要求,该板将不断进行服务器调用,当用户按下移动应用程序@raduionescu上的按钮时,这些命令将有所不同。这并不完全是我想要的,但这确实给了我一个方向。谢谢@桑德普·班达里
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
        }
    }
}