在非Activity(非主线程)中更新UI的办法:(一)Handler+Thread+Activity静态成员变量
来源:互联网 发布:支持向量回归算法 编辑:程序博客网 时间:2024/05/22 07:50
先介绍第一种方法,直接通过Handler对象更新UI,比较投机取巧,但是也能用。
1、在Activity中自定义ViewHandler,在ViewHandler中对UI进行处理,
class ViewHandler extends Handler {public ViewHandler() {}// TODO Auto-generated constructor stub@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubsuper.handleMessage(msg);bar.setProgress(msg.arg1);}}
但是ViewHandler的声明必须放在主线程中,比如OnCreate方法中,通过Activity的instance对象去得到Handler,
public class MainActivity extends Activity {ViewHandler handler = new ViewHandler();public static MainActivity instance;public ViewHandler getHandler() {return handler;}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);bar = (ProgressBar) findViewById(R.id.progress_horizontal);//得到一个静态成员变量,需要在onDestroy方法中释放,不然有可能内存泄漏this.instance = this;}
在非Activity中如果要更新UI,可以通过如下方式,需要另起一个线程,否则会报ANR
public class OperProgress {public void setPro() {Thread thread = new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubint i = 0;while (i < 100) {i++;try {Thread.sleep(500);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}Message msg = new Message();msg.arg1 = i;<span style="white-space:pre"></span>//通过静态成员变量得到ViewHandler,从而更新UIMainActivity.instance.getHandler().sendMessage(msg);}}});thread.start();}}
0 0
- 在非Activity(非主线程)中更新UI的办法:(一)Handler+Thread+Activity静态成员变量
- 在非Activity(非主线程)中更新UI的办法:(二)Handler+接口回调
- Android禁止在非Activity主线程中更新UI的解决办法
- android学习记录(十一)在非主线程实现更新ui------------Handler
- 在Android中,非主线程不能更新UI
- Handler.post()解决非主线程更新UI
- android Thread 非线程更新UI界面(handler,runOnUiThread)解决图片加载慢的问题
- androd中主线程和非主线程的通信机制(Handler/Looper/Message)
- 在Activity中调用Service的非静态方法
- Handler-接受子线程数据更新UI主线程;非主线程通信--HandlerThread
- Handler-接受子线程数据更新UI主线程;非主线程通信--HandlerThread
- Android之非主线程修改UI (一)
- 在非主线程是否可以更新UI
- android之在activity中控制另一个activity的UI更新_如何在activity之间传递handler
- android之在activity中控制另一个activity的UI更新_如何在activity之间传递handler
- android之在activity中控制另一个activity的UI更新_如何在activity之间传递handler
- android中“后台”更新Activity的办法(application handler和BroadcastReceiver)
- Android 在非主线程中更新UI也能成功原因详解
- Android:Task Affinity:[string]
- APP测试包括什么内容啊,什么时候开始 ?
- CSDN每日语录
- 校招基础总结(IT)
- Android屏幕适配全攻略(最权威的官方适配指导)
- 在非Activity(非主线程)中更新UI的办法:(一)Handler+Thread+Activity静态成员变量
- Android:Allow Task Reparenting:[boolean]
- 三级模式与两级映像
- Git 集中式vs分布式
- Android按下一个按键发生了什么
- PyCharm 教程(三)Hello world!
- 使用Kotlin进行Android开发
- access denied ("java.net.SocketPermission" "localhost:1527" "listen,resolve")
- 关于新型漏洞https cookie注入漏洞攻击剖析