public class MainActivity extends AppCompatActivity { private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv=(TextView)findViewById(R.id.mytexts); Task task = new Task(); task.execute("http://www.tngou.net/api/cook/list?rows=30&id=1",tv); } //自定义AsyncTask 三个参数:参数一:刚开始传递的数据(这个示例传递了网络图片的地址) 参数二:这个是进度数据 // 参数三:这个执行到最后返回的数据类型public class Task extends AsyncTask<Object, Void, String> { TextView tv; /** * 后台运行的方法 其实doInBackground代替线程 * doInBackground就是在一个子线程运行 * @param params * @return */ @Override protected String doInBackground(Object... params) { if(params!=null&¶ms.length>0){ String url = params[0].toString(); tv=(TextView)params[1]; String result = Data.getUrlConnect(url); return result; } return null; } /** * 在doInBackground运行过程中 不断更新数据 * 主线程运行 * @param values */ @Override protected void onProgressUpdate(Void... values) { super.onProgressUpdate(values); } /** * 主线程运行的 代替Handler中handlerMessage方法 * @param s * @return */ @Override protected void onPostExecute(String s) { if(tv!=null) tv.setText(s); else tv.setText("null"); super.onPostExecute(s); } }
}
AsyncTask
最新推荐文章于 2025-05-21 12:53:47 发布