AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/>
AndroidManifest.xml
<ProgressBar
style="?android:attr/progressBarStyleLarge"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/progress"
android:max="100"
android:visibility="gone"
/>
<Button
android:layout_marginTop="50dp"
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="btn_onClick"
android:text="キャンセル"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtResult"/>
MainActivity.java
public class MainActivity extends AppCompatActivity {
AsyncNetworkTask task;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
task = new AsyncNetworkTask(this);
task.execute("http://www.wings.msn.to/");
}
public void btn_onClick(View view){
task.cancel(true);
}
}
AsyncNetworkTask.java
public class AsyncNetworkTask extends AsyncTask<String, Integer, String>{
private TextView txtResult;
private ProgressBar progress;
public AsyncNetworkTask(Context context){
super();
MainActivity activity = (MainActivity)context;
txtResult = (TextView)activity.findViewById(R.id.txtResult);
progress = (ProgressBar)activity.findViewById(R.id.progress);
}
@Override
protected void onPreExecute() {
progress.setVisibility(ProgressBar.VISIBLE);
}
@Override
protected String doInBackground(String... params) {
publishProgress(30);
SystemClock.sleep(3000);
publishProgress(60);
StringBuilder builder = new StringBuilder();
try {
URL url = new URL(params[0]);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
BufferedReader reader = new BufferedReader(
new InputStreamReader(con.getInputStream(), "Shift-JIS"));
String line;
while((line = reader.readLine()) != null) {
builder.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
publishProgress(100);
return builder.toString();
}
@Override
protected void onProgressUpdate(Integer... values) {
Log.d("url", values[0].toString());
}
@Override
protected void onPostExecute(String s) {
txtResult.setText(s);
progress.setVisibility(ProgressBar.GONE);
}
@Override
protected void onCancelled() {
txtResult.setText("キャンセルされました");
progress.setVisibility(ProgressBar.GONE);
}
}