activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context=".MainActivity" >    <TextView        android:id="@+id/textView1"        android:layout_width="wrap_content"        android:layout_height="50dp"        android:background="#ff999999"        android:text="@string/hello_world" />    <Button        android:id="@+id/button1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Button" /></LinearLayout>

MainActivity.java


package com.example.updateui;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.app.Activity;import android.util.Log;import android.view.Menu;import android.view.View;import android.view.Window;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity{private static final String TAG = MainActivity.class.getSimpleName();private static final int REFRESH_ACTION = 1;private Button mButton;private TextView mTextView;private int mCount = 0;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTextView = (TextView) findViewById(R.id.textView1);mButton = (Button) findViewById(R.id.button1);mButton.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View arg0){// TODO Auto-generated method stubnew Thread(new Runnable() // 工作线程刷新UI{@Overridepublic void run(){// TODO Auto-generated method stubwhile (!Thread.currentThread().interrupted()){/** 这段代码也可以: * Message msg = new Message(); msg.what = * MainActivity.REFRESH_ACTION; * mHandler.sendMessage(msg); *///发送消息到UI线程进行刷新mHandler.obtainMessage(MainActivity.REFRESH_ACTION).sendToTarget();try{Thread.sleep(1000);}catch (InterruptedException e){Thread.currentThread().interrupt();}}}}).start();}});}private Handler mHandler = new Handler(){@Overridepublic void handleMessage(Message msg){// 处理消息switch (msg.what){case MainActivity.REFRESH_ACTION:mCount++;mTextView.setText("I'm updated:" + mCount);// 更新UI,这里已经是UI线程Log.i(TAG, "handleMessage");break;}super.handleMessage(msg);}};@Overridepublic boolean onCreateOptionsMenu(Menu menu){// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.activity_main, menu);return true;}}




更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. android handler和message的常用方法
  3. handler机制(二)源码分析
  4. java 定时任务
  5. Androidpn推送解决方案
  6. Android使用线程做开始暂停
  7. SwipeRefreshLayout使用小记
  8. AsyncTask 源码解析
  9. android使用PulltoRefushGridview实现下拉刷新

随机推荐

  1. Android借助Application重写App的Crash(
  2. android启动时应用程序渐变效果
  3. android 用Intent打开系统程序
  4. 浅谈Androi安全问题和Android(安卓)P安全
  5. Android中的事件传递机制
  6. Android事件分发机制及源码分析
  7. android 的Java代码中的布局相关方法Layo
  8. Android连接蓝牙打印机实现PDF文档的打印
  9. Android添加用户组及自定义App权限的方法
  10. Android studio 3.0 com.android.builder