1 关于改变Activity中TextView的方法
作者:Legend
qq:158067568
Activity中的TextView如果直接写一个线程时时刷新,即调用TextView的setText方法,那么程序不会报错,但是,TextView中的内容也不会改变。
1.1改变TextView中的内容
改变TextView中的内容可以通过Handler。Handler是Android中的消息发送器,其在哪个Activity中创建就属于且紧紧属于该Activity。还可以说其在哪个线程中new的,就是那个线程的Handler。
如果想改变TextView中的内容,就要通过Handler来实现,比如想每秒钟更新一下时间,那么如下:
<!--[if !supportLists]-->(1)
<!--[endif]-->在Activity中创建Handler
<!--[if !supportLists]-->(2)
<!--[endif]-->创建一个实现了Runnable接口的线程类
<!--[if !supportLists]-->(3)
<!--[endif]-->通过Handler的Post方法将Runnable添加进入消息队列
<!--[if !supportLists]-->(4)
<!--[endif]-->ok了。呵呵
代码
1 package rznh.zcl;
2 import android.app.Activity;
3 import android.os.Bundle;
4 import android.os.Handler;
5 import android.view.View;
6 import android.widget.Button;
7 import android.widget.TextView;
8 public class MyActivity extends Activity {
9 /** Called when the activity is first created. */
10 private Button butStart;
11 private Button butStop;
12 TextView tv;
13 int i=0;
14 Handler handler=new Handler();
15 @Override
16 public void onCreate(Bundle savedInstanceState) {
17 super.onCreate(savedInstanceState);
18 setContentView(R.layout.main);
19 /**
20 * Handler在那个Activity中new的就且仅属于那个Activity的
21 * */
22 //all by zcl qq158067568
23 butStart=(Button)findViewById(R.id.Button01);
24 butStop=(Button)findViewById(R.id.Button02);
25 tv=(TextView)findViewById(R.id.TextView01);
26 butStart.setOnClickListener(new View.OnClickListener() {
27 @Override
28 public void onClick(View v) {
29 handler.post(runnable);
30 }
31 });
32 butStop.setOnClickListener(new View.OnClickListener() {
33 @Override
34 public void onClick(View v) {
35 handler.removeCallbacks(runnable);
36 }
37 });
38 }
39 Runnable runnable=new Runnable(){
40
41 @Override
42 public void run() {
43 tv.setText(String.valueOf(i++));
44 handler.postDelayed(runnable, 1000);
45 }
46 };
47 }
分享到:
相关推荐
3.就是把之前的new Thread改成了 Handler Looper Thread的模式,这样在第一次滑动的时候就进入了wait状态,又因为handler里面的runnable是队列执行的,所以handler一直在添加的runnable也在等待,这样就避免了多次...
调用Handler.post(Runnable r)方法,Runnable运行在UI所在线程,所以可以直接调用View.invalidate() 代码如下:packagecom.Test.androidtest; importandroid.app.Activity;importandroid.content.Context;importandroid...
你需要做的就是,在异步线程中执行你的一部操作,当异步线程结束以后需要向handler发送一个消息;同时,你必须复写handler的handleMessage方法。 当handler接受但消息以后会根据你复写的方法去执行。 由于,不是很...
一、问题:在Android启动后会在新进程里创建一个主线程,也叫UI线程(非线程安全)这个线程主要负责监听屏幕点击...Handler可以把消息/Runnable对象发给Looper,由它把消息放入所属线程的消息队列中,然后Looper又会
,这个题目有点意思,对于很多人来说,可能对Thread和Handler很熟悉,主要涉及到Android的消息机制(Handler、Message、Looper、MessageQueue),详见《 从Handler.post(Runnable r)再一次梳理Android的消息机制(以及...
Handler是Android SDK来处理异步消息的核心类。 子线程与主线程通过Handler来进行通信。子线程可以通过Handler来通知主线程进行UI更新。 Handler是Android中引入的一种让开发者参与处理线程中消息循环的机制。每个...
通过看源码发现,post这个方法是把任务r转成一个message放进了handler所在的线程中的messageQueue消息队列中,并且是立刻发送的消息,这样它既不是异步的也不是延时的,所以问题来了: 1. 它和sendMessage()有什么...
2)多线程实现方式implements Runnable 或 extends Thread 3)多线程核心机制是Handler 4)提供如下几种实现方式 —-1—–Handler ————————————说明1 创建一个Handler时一定要关联一个Looper实例,默认...
1. 需求: (1)进入界面>(2)下载图片>(3... 在线程runnable执行方法下载数据完毕的时候,发送一个handler msg给异步消息,异步消息会进行处理 // 3. 测试代码: // (1). 可以使用gprs来进行测试,比较直观.wifi下载速度太快
前言 我们知道在Android开发中不能在非ui线程中更新ui,但是,有的时候我们需要在代码中执行一些诸如访问网络、查询数据库等耗时操作,为了不阻塞ui线程,我们时常会开启一个新的线程... 使用handler(线程间通讯)
Handler、Message、Loopler、MessageQueen 首先看一下我们平常使用Handler的一个最常见用法。 Handler handler =new ... new Thread(new Runnable() { @Override public void run() { Message message = Messag
消息处理机制主要对象:Looper,Handler,Message(还有MessageQueue和Runnable) Looper不断从MessageQueue消息队列中取出一个Message,然后传给Handle,如此循环往复,如果队列为空,那么它会进入休眠。 这些类的主要...
Handler:可以发布或者处理一个消息或者操作一个Runnable,通过Handler发布消息,消息将只会发送到与它关联的消息队列,然也只能处理该消息队列中的消息 Looper:是Handler和消息队列之间通讯桥梁,程序组件首先...
18.1 使用Handler完成子线程发送消息和Runnable对象到主线程 250 18.2 使用Handler完成主线程发送消息到子线程 256 18.3内存泄露和内存溢出的区别以及引用的级别 260 18.4 使用软引用解决Handler内存泄漏问题 262 ...
用来控制同时访问某个特定资源的操作数量,或者同时执行某个指定操作的数量 管理者一组虚拟的许可。acquire获得许可(相当于P操作),release释放许可(相当于V操作) 应用场景 (1)二值信号...
15.2.4 AsyncContext.start(Runnable) 129 15.2.5异步Servlet支持 130 15.3 Servlet 3.1+集成 131 15.3.1 HttpServletRequest#changeSessionId() 132 16.基本和摘要式身份验证 132 16.1 ...
应用启动页自定义跳转计时器View Demo: CircleTextProgressbar.java: ... import android.content.Context; import android.content.res.ColorStateList;...import android.content.res.TypedArray;...
public class AttackHandler extends Handler { @Override public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) { request ...