安卓ondraw刷新视图_Android View Canvas onDraw未执行

这里有一点误会 . invalidate和postInvalidate方法用于告诉View它需要在最早的绘图周期中刷新和重绘 . 不同之处在于应该从UI线程中调用invalidate方法,并且应该从UI线程外部调用postInvalidate .

这里简要描述了这些方法:

另一方面,AsyncTask是一个专为您在UIThread中运行're facing. When you need to perform a big task in the background, asynchronously you need the AsyncTask for that, but! the AsyncTask'回调方法的问题设计的类!

在这里看一下AsyncTask方法的解释:

执行异步任务时,任务将执行4个步骤:

onPreExecute(),在执行任务后立即在UI线程上调用 . 此步骤通常用于设置任务,例如通过在用户界面中显示进度条 . doInBackground(Params ...),在onPreExecute()完成执行后立即在后台线程上调用 . 此步骤用于执行可能需要很长时间的后台计算 . 异步任务的参数将传递给此步骤 . 计算结果必须由此步骤返回,并将传递回最后一步 . 此步骤还可以使用publishProgress(Progress ...)发布一个或多个进度单元 . 这些值发布在UI线程的onProgressUpdate(Progress ...)步骤中 . onProgressUpdate(Progress ...),在调用publishProgress(Progress ...)后在UI线程上调用 . 执行的时间是不确定的 . 此方法用于在后台计算仍在执行时显示用户界面中的任何形式的进度 . 例如,它可用于为进度条设置动画或在文本字段中显示日志 . onPostExecute(Result),在后台计算完成后在UI线程上调用 . 背景计算的结果作为参数传递给该步骤 .

这意味着在onPostExecute方法中,您应该尝试使用invalidate方法而不是从UIThread调用的postInvalidate方法 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值