Android按键监听和AsyncTask异步处理
16lz
2021-01-26
对一个控件设置监听
比如说有一个id为send的button
首先要声明出这样一个button:private Button send;
然后在onCreat(Bundle saveInstanceState)函数中对Button进行寻找吧:send=(Button)findViewById(R.id.send);
为Button注册一个监听器,并调用onClick()方法,当点击按钮的时候就会执行。
send.setOnClickListener(new OnClickListener(){ public void onClick(View v){ String status="控制系"+share.getText().toString();//share是一个定义的EditText控件 String TAG="SEND"; Log.d(TAG,"onClicked with status:"+status); new PostTask().execute("<"+getPackageName()+">"+status); } });
使用AsyncTask
为什么要使用AsyncTask
以我们自己适用手机为例,我们希望手机对我们的每一个操作都保持灵敏,然而对于我们的每一个操作后面都意味着可能会有比较耗时的操作。这样,如果只有一个线程,必然会让我们狂躁..所以我们把一些事情放在后台进行操作。
AsyncTask是什么
AsyncTask是一个抽象类,所以需要创建一个类来继承它。
public abstract class AsyncTask
- Params:执行AsyncTask时需要传入的参数
- Progress:如果需要在当前界面上显示进度
- Result:任务执行结束后,如果需要对结果进行返回
private final class PostTask extends AsyncTask<String,Void,String>
- 第一个泛型参数为String,意味着在执行时,需要把字符串传送到后台任务。本例是发送微博时的操作,也就是说,我在主线程中知道了自己要发送的字,然后把这些字传送到了后台,由后台具体执行post
- 第二个参数为Void,也就是说不需要进度显示
第三个参数为String,也就是说,在本任务中,如果发送成功,则返回”successful“,失败了就返回”failed“。目前看的蛮多例子都会设置为boolean
在这个抽象类中存在经常需要重写的四个方法。
onPreExecute()
:在后台任务开始之前就进行调用,用于进行一些界面上的初始化操作,比如显示一个进度条的对话框doInBackground(Params...)
:这个方法的所有代码都会在子线程中运行,任务完成后通过return将任务执行的结果,就是第三个参数啦,进行返回onProgressUpdate(Progress...)
:这个里面可以对UI进行操作,对界面进行更新,类似进度条的更新吧onPostExecute(Result)
:就让我简单粗暴的理解成任务完成之后把进度条关掉吧…
private final class PostTask extends AsyncTask<String,Void,String>{ protected String doInBackground(String...params){ YambaClient yambaCloud=new YambaClient("student","quick"); try{ yambaCloud.postStatus(params[0]); return"successfully posted"; }catch(YambaClientException e){ return"Failed"; } } protected void onPostExecute(String result){ super.onPostExecute(result); Toast.makeText(Weibo_Submit.this, result, Toast.LENGTH_LONG).show(); if(result.startsWith("successfully"))share.setText(""); } }
TOAST是Android中比较常用的一种提示方式。我好像在别的博客里写过…怎么就忘了呢…哎…
更多相关文章
- SQLite数据库浅谈
- Android(安卓)Design Support Library - FloatingActionButton
- android 隔几秒再执行
- android framework层添加串口操作
- EventBus的使用详解
- Android(安卓)kotlin网络请求框架fuel(简单方便的使用,提供项目中
- android 上传文件到 spring 搭建的后台
- android图书管理系统+javaweb后台服务器代码
- android事件分发机制(上)