私はJavaのクラスに1つのアクティビティを、もう1つにはボイドを実行したいクラスがあります。 Web.javaは、次のようになります。これを実行するための最良の方法は何ですか?非同期
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();
}
}
});
}
}
そして、これはほとんどのメインスレッドの上に正常に動作しますが、私はそれは違うオーバー行くようにしたいですスレッドのように私のUI doesntは、接続が悪い場合に詰まる 私はどのように非同期でこの作品を作るだろうか?これは初めての私は非同期を使用していますが、私はそれを使うべき方法を理解していません。数日間過ごしてみると、絶対に成功しないと思っています。 私は、私の現在のコードと比較し、それが最初
を実現することができますどのような私は間違っ
まず、AsyncTaskを作成しようとしませんでしたか?もしそうなら、[編集]して試してみてください。より簡単な方法でネットワークリクエストを作成したい場合は、VolleyまたはOkHttpを使用してください。 –
私の答えを確認すると、本当に役立ちます。 -waiting-for-answer/37292163?noredirect = 1#comment62112709_37292163 –