Android 进程和线程模型

发表于:2012-10-08 10:35

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:sunboy_2050    来源:51Testing软件测试网采编

分享:

  AsyncTask

  首先继承一下此类,实现以下若干方法:

  1)onPreExecute(),该方法将在执行实际的后台操作前被UI thread调用。可以在该方法中做一些准备工作,如在界面上显示一个进度条。

  2)doInBackground(Params...),将在onPreExecute 方法执行后马上执行,该方法运行在后台线程中。这里将主要负责执行那些很耗时的后台计算工作。

  可以调用publishProgress方法来更新实时的任务进度。该方法是抽象方法,子类必须实现。

  3)onProgressUpdate(Progress...),在publishProgress方法被调用后,UI thread将调用这个方法从而在界面上展示任务的进展情况,例如通过一个进度条进行展示。

  4)onPostExecute(Result),在doInBackground 执行完成后,onPostExecute 方法将被UI thread调用,后台的计算结果将通过该方法传递到UI thread.

  使用时需要遵循以下规则:

  1)Task的实例必须在UI thread中创建

  2)execute方法必须在UI thread中调用

  3)不要手动的调用这些方法,只调用execute即可

  4)该task只能被执行一次,否则多次调用时将会出现异常

  示例如下:

public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.main); 

       editText = (EditText) findViewById(R.id.weather_city_edit); 
       Button button = (Button) findViewById(R.id.goQuery); 
       button.setOnClickListener(this); 

public void onClick(View v) { 
       new GetWeatherTask().execute(“aaa”); 
}

class GetWeatherTask extends AsyncTask⁢<String, Integer, String> { 
    protected String doInBackground(String... params) { 
         return getWetherByCity(params[0]); 
    }
    protected void onPostExecute(String result) { 
         setTitle(result);
    } 
}

44/4<1234
重磅发布,2022软件测试行业现状调查报告~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号