Android:非同期タスクAsyncTask、execute、publishProgress、onProgressUpdate
3182 ワード
public class MainActivity extends Activity implements OnClickListener
{
private TextView textView;
private ProgressBar progressBar;
class MyAsyncTask extends AsyncTask
{
/**
* :AsyncTask
* 1.Params:UI 。
* 2.Progress: 。
* 3.Result: 。 doInBackground 。
*
* :
* 1.onPreExecute()
* 2.doInBackground()-->onProgressUpdate()
* 3.onPostExecute()
*/
@Override
protected void onProgressUpdate(Integer... values)// ,
{
progressBar.setProgress(values[0]);//
}
@Override
protected void onPreExecute()// UI
{
progressBar.setVisibility(View.VISIBLE);// , ,
}
@Override
protected String doInString... params)//
{
// , ,
//String result = download();
for (int i = 0; i < 10; i++)
{
try
{
Thread.sleep(1000);
publishProgress(i * 10);// 10%, onProgressUpdate()
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
return " !";
}
@Override
protected void onPostExecute(String result)// UI
{
// main
progressBar.setVisibility(View.GONE);// ,
textView.setText(result);
}
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.button1).setOnClickListener(this);
textView = (TextView) findViewById(R.id.textView1);
progressBar = (ProgressBar) findViewById(R.id.progressBar1);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.button1:
btnClick();
break;
default:
break;
}
}
private void btnClick()// AsyncTask ,
{
MyAsyncTask asyncTask = new MyAsyncTask();
asyncTask.execute("http://www.google.com");// AsyncTask,execute UI
}
private String download()// ,
{
try
{
Thread.sleep(3000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
return " !";
}
}