日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android消息机制——时钟显示和异步处理工具类(AsyncTask)

發布時間:2025/4/5 Android 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android消息机制——时钟显示和异步处理工具类(AsyncTask) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 時鐘顯示

定義布局文件——activity_my_analog_clock_thread_demo.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.example.contactsdemo.MyAnalogClockThreadDemo" ><AnalogClock android:id="@+id/myAnalogClock"android:layout_width="wrap_content"android:layout_height="wrap_content"/><TextViewandroid:id="@+id/info"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout>

定義Activity程序,進行操作

package com.example.contactsdemo;import java.text.SimpleDateFormat; import java.util.Date;import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView;public class MyAnalogClockThreadDemo extends ActionBarActivity {private TextView info = null; //文本顯示組件private static final int SET = 1; //線程標記private Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) {switch(msg.what){case SET: //判斷標志位MyAnalogClockThreadDemo.this.info.setText("當前時間為:"+msg.obj.toString()); //設置顯示信息 }}};private class ClockThread implements Runnable{@Overridepublic void run() {while(true){Message msg = MyAnalogClockThreadDemo.this.handler.obtainMessage(MyAnalogClockThreadDemo.SET,new SimpleDateFormat("yyyy-MM-dd HH-mm-ss").format(new Date())); //實例化MessageMyAnalogClockThreadDemo.this.handler.sendMessage(msg); //發送消息try {Thread.sleep(1000); //延遲1秒} catch (InterruptedException e) {// TODO Auto-generated catch block e.printStackTrace();} } }}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_my_analog_clock_thread_demo);this.info = (TextView) super.findViewById(R.id.info); //取得組件new Thread(new ClockThread()).start(); //啟動線程 }@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.my_analog_clock_thread_demo, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);} }

2. 異步處理工具類:AsyncTask——實現進度條

定義布局文件——activity_my_async_task_demo.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.example.contactsdemo.MyAsyncTaskDemo" ><ProgressBar android:id="@+id/bar"android:layout_width="fill_parent"android:layout_height="wrap_content"style="?android:attr/progressBarStyleHorizontal"/><TextViewandroid:id="@+id/info"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout>

定義Activity程序,顯示進度條

package com.example.contactsdemo;import android.support.v7.app.ActionBarActivity; import android.os.AsyncTask; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.ProgressBar; import android.widget.TextView;public class MyAsyncTaskDemo extends ActionBarActivity {private ProgressBar bar = null; //進度條組件private TextView info = null; //文本顯示組件 @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_my_async_task_demo);this.bar = (ProgressBar) super.findViewById(R.id.bar);this.info = (TextView) super.findViewById(R.id.info);ChildUpdate child = new ChildUpdate(); //子任務對象child.execute(100); //休眠時間 }private class ChildUpdate extends AsyncTask<Integer, Integer, String>{@Overrideprotected void onPostExecute(String result) { //任務執行完后執行MyAsyncTaskDemo.this.info.setText(result); //設置文本 }@Overrideprotected void onProgressUpdate(Integer... values) { //每次更新后的數值MyAsyncTaskDemo.this.info.setText("當前進度是:"+values[0]); //更新文本信息 }@Overrideprotected String doInBackground(Integer... arg0) { //處理后臺任務for(int i=0;i<100;i++){ //進度條累加MyAsyncTaskDemo.this.bar.setProgress(i); //設置進度this.publishProgress(i); //傳遞每次更新的內容try {Thread.sleep(arg0[0]); //延緩執行} catch (InterruptedException e) {// TODO Auto-generated catch block e.printStackTrace();}}return "執行完畢!";}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.my_async_task_demo, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);} }

?

總結

以上是生活随笔為你收集整理的Android消息机制——时钟显示和异步处理工具类(AsyncTask)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。