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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android中的多程式、多執行緒Android執行緒
- Java中命名執行器服務執行緒和執行緒池Java執行緒
- Android多執行緒之執行緒池Android執行緒
- 多執行緒和多執行緒同步執行緒
- Mac Redis 服務後臺執行MacRedis
- 使用多執行緒提高rest服務效能執行緒REST
- Android中的多執行緒斷點續傳Android執行緒斷點
- python中多執行緒和多程序的應用Python執行緒
- Android中的執行緒池Android執行緒
- 後臺執行緒(daemon)執行緒
- android程式和執行緒Android執行緒
- Java中的多執行緒Java執行緒
- Java多執行緒-完成Android開發中的某些需求Java執行緒Android
- Python的多程式和多執行緒Python執行緒
- java socket 通訊socketServer 服務端多執行緒JavaServer服務端執行緒
- Android 多執行緒-----AsyncTask詳解Android執行緒
- Android入門教程 | 多執行緒Android執行緒
- Python中的多工:多執行緒Python執行緒
- 大話Android多執行緒(四) Callable、Future和FutureTaskAndroid執行緒
- Android中的執行緒通訊Android執行緒
- Android JNI 中的執行緒操作Android執行緒
- ObjC 多執行緒簡析(一)-多執行緒簡述和執行緒鎖的基本應用OBJ執行緒
- python多執行緒中:如何關閉執行緒?Python執行緒
- Java中多執行緒的案例Java執行緒
- 在同一臺計算機中執行多個MySQL服務計算機MySql
- C++中的多執行緒及其之後的周邊C++執行緒
- Swift多執行緒:使用Thread進行多執行緒間通訊,協調子執行緒任務Swift執行緒thread
- 多執行緒安全性和Java中的鎖執行緒Java
- 瞭解 Android 的程式和執行緒Android執行緒
- JSRE中的多工與多執行緒JS執行緒
- 2019Android多執行緒總結Android執行緒
- 4.2019Android多執行緒總結Android執行緒
- 多執行緒在微服務API統計和健康檢查中的使用執行緒微服務API
- 瀏覽器多執行緒和js單執行緒瀏覽器執行緒JS
- 多執行緒:執行緒池理解和使用總結執行緒
- 執行緒以及多執行緒,多程式的選擇執行緒
- 多執行緒--執行緒管理執行緒
- 執行緒與多執行緒執行緒