天天看點

基礎篇(十三) Activity,Service,子線程 通信

Activity中直接建立Thread,Android系統在記憶體不足時,會将一些Activity銷毀,這樣Thread就會失去管理對象,使程式發生意想不到的結果。 Service默默地運作在背景,生命周期可控,更合适管理Thread。形成Activity-->Service-->Thread三層結構。Activity将需要的任務告訴Service層,Service層建立Thread去完成任務。Thread将任務的進度、狀态、錯誤資訊回報給Service,Service将這些消息回報給相關的Activity,并且還可以利用Notification更新通知欄消息。

一、Activity<-->Service通信 1. Activity調用startService (Intent)方法,将消息添加到Intent對象中,Service對象可以在調用onStartCommand (Intent)的時候得到這些消息。如             果有大量的資訊要傳遞的話,Service端要判斷一下消息是什麼,才能作進一步的處理。 2. Activity調用bindService ()方法,得到Service裡Binder對象的引用,這樣Activity可以通過binder實作與Service的通信。    ( 參考:http://blog.csdn.net/android_bar/article/details/49300051,  http://blog.csdn.net/liuhe688/article/details/6623924)

3. Service向Activity發送消息,可以使用Broadcast,當然Activity要注冊相應的 BroadcastReciever。比如Service要向多個Activity發送同樣的消               息,用這種方法就很好。 ( 參考:http://blog.csdn.net/liuhe688/article/details/6641806) 4. Service向Activity發送消息,可以 使用Handler,利用Application間接把Handler傳給Service。     ( 參考: http://www.cnblogs.com/tangchenglin/archive/2011/12/14/2287673.html ) 二、 Service<-->Thread通信 Service建立Thread後,如果要對 Thread進行控制(啟動,暫停,停止等),Service中保留 Thread引用,就可以直接 調用Thread的方法。 Thread要向Service發送消息,通常使用Handler。 ( 參考: http://blog.csdn.net/liuhe688/article/details/6407225 )

三、 Activity<-->Thread通信 Activity建立Thread後,如果要對Thread進行控制(啟動,暫停,停止等),Activity中保留Thread引用,就可以直接調用Thread的方法。

Thread要向Activity發送消息,通常使用Handler。 ( 參考: http://blog.csdn.net/liuhe688/article/details/6407225 )

繼續閱讀