У меня есть классы Java, один из которых является активным, а другой - классом, из которого я хочу запустить void. Web.java выглядит следующим образом:Что было бы лучшим способом сделать этот запуск Async
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class Web {
public Document requestPage(String urll) throws Exception {
StringBuilder result = new StringBuilder();
URL url = new URL(urll);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
result.append(line);
}
rd.close();
Document doc = Jsoup.parse(result.toString());
return doc;
}
}
И мой MainActivity.java выглядит следующим образом:
import android.support.v7.app.AppCompatActivity;
import android.widget.Button;
import android.widget.EditText;
import android.view.View;
import android.widget.Toast;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class MainActivity extends AppCompatActivity {
Button Visit;
EditText Urlbox;
Web web = new Web();
@Override
protected void onCreate(Bundle savedInstanceState) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Visit = (Button)findViewById(R.id.Button);
Urlbox = (EditText)findViewById(R.id.EditText);
Visit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Document lol = web.requestPage(Urlbox.getText().toString());
if(lol.text().toString() != null){
Toast.makeText(MainActivity.this, "Visit success!",Toast.LENGTH_SHORT).show();
}
}
});
}
}
И это отлично работает над основной нитью большинства, но я хочу, чтобы сделать его более другой нить, поэтому мой пользовательский интерфейс не застрял, если соединение плохое. Как бы сделать эту работу в async? Это мой первый раз, когда я использую async, но я просто не понимаю, как я должен его использовать, ive потратил несколько дней, пытаясь понять это с абсолютным успехом. Так что, если бы я мог получить несколько примеров, которые бы работали, это было бы фантастично, поэтому я мог бы сравнить его с моим текущим кодом и узнать, что я сделал неправильно
Вы сначала не пытались сделать AsyncTask? Если это так, пожалуйста, [править] и показать свою попытку. Если вам нужен более простой способ сделать сетевой запрос, то используйте Volley или OkHttp –
. Вы, ван, проверяете мой ответ, это будет очень полезно для вас. Http://stackoverflow.com/questions/37289109/calling-a-async-task-and Ожидание-для-ответа/37292163? noredirect = 1 # comment62112709_37292163 –