public
class
MainActivity
extends
Activity
implements
OnClickListener
{
private
TextView textView;
private
ProgressBar progressBar;
class
MyAsyncTask
extends
AsyncTask<String, Integer, String>
{
/**
* 异步任务:AsyncTask<Params, Progress, Result>:只能子线程发消息到main线程
* 1.Params:UI线程传过来的参数。可变参数影响asyncTask.execute()和doInBackground().
* 2.Progress:发送消息的类型。可变参数影响onProgressUpdate()和publishProgress().
* 3.Result:返回结果的类型。耗时操作doInBackground的返回结果传给执行之后onPostExecute的参数类型。
*
* 执行流程:
* 1.onPreExecute()
* 2.doInBackground()-->onProgressUpdate()
* 3.onPostExecute()
*/
@Override
protected
void
onProgressUpdate(Integer... values)
{
progressBar.setProgress(values[
0
]);
}
@Override
protected
void
onPreExecute()
{
progressBar.setVisibility(View.VISIBLE);
}
@Override
protected
String doInString... params)
{
for
(
int
i =
0
; i <
10
; i++)
{
try
{
Thread.sleep(
1000
);
publishProgress(i *
10
);
}
catch
(InterruptedException e)
{
e.printStackTrace();
}
}
return
"下载完成!"
;
}
@Override
protected
void
onPostExecute(String result)
{
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()
{
MyAsyncTask asyncTask =
new
MyAsyncTask();
asyncTask.execute(
"http://www.google.com"
);
}
private
String download()
{
try
{
Thread.sleep(
3000
);
}
catch
(InterruptedException e)
{
e.printStackTrace();
}
return
"下载完成!"
;
}
}