Android中後臺的服務和多執行緒
後臺功能是Android的四大元件之一,其重要程度自然不言而喻,而服務是Android中實現程式後臺執行的解決方案,非常適合去執行那些不需要互動,而且要長期執行的任務。而所有的任務預設都是在主執行緒完成的,也就是說,如果我們沒有多執行緒的程式設計,就會導致主執行緒被堵塞
多執行緒
new Thread(new Runnable() { @Override public void run() { } }).start();
透過new Thread就可以建立新的執行緒
class MyThread1 implement Runnable{ @Override public void run() { } } new Thread(new MyThread()).start();
透過實現Runnable介面
class MyThread1 extends Thread{ @Override public void run() { } } newMyThread.start();
透過繼承Thread
使用多執行緒時更新UI:
runOnUiThread(new Runnable(){ public void run(){ textView.setText(result); } } )
當然,Android也提供了一套非同步訊息處理機制:
public class MainActivity extends AppCompatActivity { private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { TextView textView=(TextView)findViewById(R.id.tvMsg); textView.setText(msg.obj.toString()); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button=(Button)findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new Thread(new Runnable() { @Override public void run() { Message message=new Message(); message.obj=new String("資料"); handler.sendMessage(message); } }).start(); } }); } }
其中
-
Message用於封裝訊息。
-
Handle用於傳送和處理訊息,在子執行緒中呼叫sendMessage傳送訊息,在主程式中HandleMessage中處理
-
MessageQueu,儲存了handle傳送的訊息等待處理
-
Looper完成訊息派遣任務,不停檢查佇列中是否有訊息,如果有就提取出來給handle
AsyncTask
是Android簡化執行緒資料更新UI提供的一個抽象類
-
onPreExecute():在非同步開始執行前被呼叫
-
onPostExecute():在非同步執行結束後被呼叫
-
onProgressUpdate
-
doInBackground
使用服務
-
透過startService啟動服務,如果已有服務則啟動,沒有則建立,建立的時候呼叫oncreat,每呼叫一次startService就呼叫一次onStartCommand
-
透過stopService或者stopSelf,會執行onDestroy
繫結服務
-
使用bindService繫結服務
-
unbindService解除繫結
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2681343/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java中命名執行器服務執行緒和執行緒池Java執行緒
- java--多執行緒之後臺執行緒Java執行緒
- Android《多執行緒-中》Android執行緒
- Android中的多程式、多執行緒Android執行緒
- Mac Redis 服務後臺執行MacRedis
- Android中UI執行緒與後臺執行緒互動設計的5種方法AndroidUI執行緒
- 使用多執行緒提高rest服務效能執行緒REST
- 多執行緒和多執行緒同步執行緒
- [NODEJS]後臺執行某服務NodeJS
- 多執行緒-程式和執行緒的概述執行緒
- Android多執行緒之執行緒池Android執行緒
- Android的執行緒和執行緒池Android執行緒
- 後臺執行緒(daemon)執行緒
- C#中的執行緒(三)多執行緒C#執行緒
- 掌握Android中的程式和執行緒Android執行緒
- 多執行緒-執行緒組的概述和使用執行緒
- 多執行緒-執行緒池的概述和使用執行緒
- java socket 通訊socketServer 服務端多執行緒JavaServer服務端執行緒
- Android中的多執行緒斷點續傳Android執行緒斷點
- Java中的多執行緒Java執行緒
- RxJava 中的多執行緒RxJava執行緒
- Qt 中的多執行緒QT執行緒
- 多執行緒中的ManualResetEvent執行緒
- Java多執行緒——獲取多個執行緒任務執行完的時間Java執行緒
- C#.Net前臺執行緒與後臺執行緒的區別C#執行緒
- 在同一臺計算機中執行多個MySQL服務計算機MySql
- python中多執行緒和多程序的應用Python執行緒
- Java中多執行緒的案例Java執行緒
- ArcGISEngine中的多執行緒使用執行緒
- Java 程式中的多執行緒Java執行緒
- 多執行緒在微服務API統計和健康檢查中的使用執行緒微服務API
- ObjC 多執行緒簡析(一)-多執行緒簡述和執行緒鎖的基本應用OBJ執行緒
- Python中的多工:多執行緒Python執行緒
- Android中的執行緒池Android執行緒
- Android中執行緒的使用Android執行緒
- Android多執行緒之IntentServiceAndroid執行緒Intent
- Android多執行緒總結Android執行緒
- boost中asio網路庫多執行緒併發處理實現,以及asio在多執行緒模型中執行緒的排程情況和執行緒安全。執行緒模型