新聞中心
一、Android有兩種方式處理線程:

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),梅江企業(yè)網(wǎng)站建設(shè),梅江品牌網(wǎng)站建設(shè),網(wǎng)站定制,梅江網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,梅江網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
比較耗時(shí)的操作放在后臺(tái)服務(wù),通過通知機(jī)制通知用戶使用的活動(dòng)(activity);在后臺(tái)線程中處理耗時(shí)的操作
二、使用Handler
創(chuàng)建后臺(tái)線程最友好的辦法是創(chuàng)建一個(gè)Handler子類的實(shí)例。只需一個(gè)Handler對(duì)應(yīng)一個(gè)Activity。自定義的后臺(tái)線程可與Handler通信,Handler將與UI線程一起工作。和Handler通信,需要兩個(gè)選項(xiàng),message和runnable對(duì)象。
三、Message
發(fā)送Message到Handler,第一步調(diào)用obtainMessage(),從池中得到Message對(duì)象。
然后,可通過消息隊(duì)列將Message發(fā)送給Handler,通過sendMessage…()方法族:
sendMessage() 立即發(fā)送Message到消息隊(duì)列
sendMessageAtFrontOfQueue() 立即發(fā)送Message到隊(duì)列,而且是放在隊(duì)列的最前面
sendMessageAtTime() 設(shè)置時(shí)間,發(fā)送Message到隊(duì)列
sendMessageDelayed() 在延時(shí)若干毫秒后,發(fā)送Message到隊(duì)列
為了處理Message,Handler需要實(shí)現(xiàn)handleMessage(),當(dāng)Message出現(xiàn)在隊(duì)列中時(shí),會(huì)調(diào)用handleMessage()方法。另外,Handler可在需要時(shí)更新UI。
以下示例演示一個(gè)進(jìn)度條,每隔1秒鐘增加1/20個(gè)單位。效果圖:
java代碼:
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- android:id="@+id/progress"
- style="?android:attr/progressBarStyleHorizontal"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" />
java代碼:
- package eoe.demo;
- import android.app.Activity;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.widget.ProgressBar;
- public class ShowThread extends Activity {
- ProgressBar bar;
- Handler handler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- bar.incrementProgressBy(5);
- }
- };
- boolean isRunning = false;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- bar = (ProgressBar) findViewById(R.id.progress);
- }
- @Override
- protected void onStart() {
- super.onStart();
- bar.setProgress(0);
- Thread background = new Thread(new Runnable() {
- @Override
- public void run() {
- for (int i = 0; i < 20 && isRunning; i++) {
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- }
- handler.sendMessage(handler.obtainMessage());
- }
- }
- });
- isRunning = true;
- background.start();
- }
- @Override
- protected void onStop() {
- super.onStop();
- isRunning = false;
- }
- }
小結(jié):
當(dāng)?shù)谝淮螁?dòng)一個(gè)android程序是,android會(huì)自動(dòng)創(chuàng)建一個(gè)稱為“main”主線程的線程。這個(gè)線程很重要,因?yàn)樗?fù)責(zé)吧時(shí)間分派到相應(yīng)對(duì)控件,其中就包括屏幕繪圖時(shí)間,它同樣是用戶與android控件交互的線程。
【編輯推薦】
Android 計(jì)時(shí)器Timer用法
Android智能手機(jī)操作系統(tǒng)
常用的Android指令和模擬器參數(shù)
用C#實(shí)現(xiàn)HTTP協(xié)議下的多線程文件傳輸
SQL點(diǎn)滴之收集SQL Server線程等待信息
文章標(biāo)題:解析Android中線程的好處
URL分享:http://www.5511xx.com/article/djcgipi.html


咨詢
建站咨詢
