我有這個條件來編寫每50ms執行一次的服務器調用。 服務器調用必須來自齊射。 但是我面臨的困難是每個服務器調用都有不同的URL,以及如何在線程中傳遞這些不同的URL以便每隔50ms調用一次服務器。在線程中執行不同的操作 - android
0
A
回答
0
我不是Android專家,但這是我想到的,如果你想在50ms後調用不同的URL。請糾正我,如果我錯了:)
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
總是歡迎先生:)我可以幫助的快樂:) –
相關問題
- 1. 線程同步執行操作順序
- 2. 在AFNetworking的同一線程中執行某些操作
- 3. 如何在android中執行線程操作
- 4. 即使在UI線程上執行時的跨線程操作
- 5. 在UI線程上執行同步操作
- 6. Android:使用線程在指定時間執行某些操作
- 7. 在不同的線程執行回調
- 8. WCF是否在同一個線程中的Singleton WCF服務中執行操作?
- 9. JQuery:獲取無線電值並執行不同的操作
- 10. 在單獨的線程中執行長操作是否安全?
- 11. 在Android中執行Google語音操作
- 12. 在android服務或後臺線程中執行網絡操作的地方?
- 13. Android是否只強制從UI線程執行UI操作?
- 14. libuv線程池線程在不使用時會執行什麼操作?
- 15. 中斷處理程序在不同的線程中執行?
- 16. 如何在Java的Observer的update()中執行不同的操作?
- 17. 如何同時在兩個不同的線程中執行PyObject_CallObject()?
- 18. 如何在Android的繪圖線上執行撤消操作?
- 19. 如何在不同的線程中運行監聽器或在不同的線程中執行計算
- 20. 此代碼是否在與主UI線程不同的線程中執行
- 21. 在不中斷主線程的情況下執行定時操作
- 22. C#|程序在執行後不執行任何操作
- 23. didFinishPickingMediaWithInfo根據不同的發件人執行不同的操作
- 24. 如何在繼續執行之前'刷新'UI線程操作
- 25. 閱讀在不同線程中操作的值
- 26. Android - 通過多線程執行不同的功能
- 27. 在線性時間運行的Haskell中執行反向操作
- 28. 在HttpModule中執行操作
- 29. Android線程 - 在執行所有其他線程之前執行一個線程
- 30. 如何使運行在x:00 x:15 x:30和x:45的線程在2:00執行不同的操作
你有,你必須按順序呼叫服務器,每一個50ms的列表,或者必須把他們都稱爲每隔50ms? –
聽起來像你正在嘗試DDOS的人 – DDsix
我正在從移動控制板上工作。所以根據需要,這個板子不斷的服務器調用將會產生,這些命令將隨着用戶在移動應用程序上按下按鈕而不同@RaduIonescu – guerrero