1. 程式人生 > >Activity與Service是否處於同一程序? Service 的兩大功能是什麼?

Activity與Service是否處於同一程序? Service 的兩大功能是什麼?

Activity與Service是否處於同一程序? 
  一般來說:同一個包內的activity和service,如果service沒有設定屬性android:process=":remote"的話,service會和activity跑在同一個程序中,由於一個程序只有一個UI執行緒,所以,service和acitivity就是在同一個執行緒裡面的。android:process=":remote"值得注意他的用法!!!如果Activity想訪問service中的物件或方法,如果service設定屬性android:process=":remote",那麼就是跨程序訪問,跨程序訪問容易出現意想不到的問題,還是慎重給service設定屬性android:process=":remote"

Service 的兩大功能是什麼?怎樣實現?

    android系統中的Service主要有兩個作用:後臺執行和跨程序通訊。

    情況1:當Acitivity和Service處於同一個Application和程序時,通過繼承Binder類來實現。

    步驟如下:
    Service和Activity的連線可以用ServiceConnection來實現,需要實現一個新的ServiceConnection,重寫onServiceConnected和onServiceDisconnected方法。執行繫結,呼叫bindService方法,傳入一個選擇了要繫結的Service的Intent(顯式或隱式)和一個你實現了的ServiceConnection例項。一旦連線建立,你就能通Service的介面onBind()得到serviceBinder例項進而得到Service的例項引用。一旦Service物件找到,就能得到它的公共方法和屬性。但這種方式,一定要在同一個程序和同一個Application裡。

    情況2:跨程序通訊,使用AIDL;

     步驟如下: 
      1.  在Eclipse工程的package目錄中建立一個副檔名為aidl的檔案。package目錄就是Java類所在的目錄。該檔案的語法類似於Java程式碼。aidl檔案中定義的是AIDL服務的介面。這個介面需要在呼叫AIDL服務的程式中訪問。
      2.  如果aidl檔案的內容是正確的,Eclipse外掛會自動生成一個Java介面檔案(*.java)。
      3.  建立一個服務類(Service的子類)。
      4.  實現由aidl檔案生成的Java介面。
      5.  在AndroidManifest.xml檔案中配置AIDL服務,尤其要注意的是,<action>標籤的android:name屬性值就是客戶端要引用該服務的ID,也就是Intent類構造方法的引數值。

相關推薦

ActivityService是否處於同一程序? Service功能是什麼?

Activity與Service是否處於同一程序?   一般來說:同一個包內的activity和service,如果service沒有設定屬性android:process=":remote"的話,service會和activity跑在同一個程序中,由於一個程序只有一個UI執行緒,所以,service和ac

配置設備作為DHCP中繼(中繼服務器處於同一網絡)

hit ack relay alt 二層交換機 動態 white asi from 作業提要一、拓撲圖二、組網需求如上圖所示,某企業將DHCP服務器部署在核心層設備上,DHCP服務器與企業內的終端不在同一個網段。企業希望使用該DHCP服務器為終端動態分配IP地址。三、配置思

【Android】【ServiceActivityService是否同一程序

如果Service沒有設定屬性android:process=”:remote” Service會和Activity是在同一個程序中的,而且都是主執行緒 如果Service設定屬性android:process=”:remote” 那麼就會建立新程序,這時

使用Messenger進行ActivityService之間的相互通信

ember hearts 接口 connect sed rst messenger [] ply 在Android開發中,有時候我們需要讓一個Activity綁定一個Service,進行兩者之間的通信。當Activity綁定成功以後,就可以調用Service中的public

Messenger實現ActivityService的雙向通訊

Activity與Service間的單向通訊,相信大家都知道,常用的有下面3種方式: 1. 通過bindService(service, conn, BIND_AUTO_CREATE)開啟Service,然後在ServiceConnection的onServi

Blog-03-在Service中啟動Activity優化

在Service中啟動Activity 1、建立主Activity,MainActivity。 public class MainActivity extends AppCompatActivity { @Override protecte

Android四大元件應用系列——ActivityService互動實現APK下載

private Thread downloadThread; private void startDownload(){ downloadThread=new Thread(new Runnable() { @Override public void run

【Android】判斷應用Application、ActivityService是否處於活動狀態

通過ActivityManager我們可以獲得系統里正在執行的activities,包括程序(Process)等、應用程式/包、服務(Service)、任務(Task)資訊。 1、判斷應用App是

Activity Service 實現Parcelable介面傳遞 ArrayList 集合

在 Activity 跟 Service 的通訊過程中,一般用來傳遞資料的載體就是Intent了,一般用來傳資料呢,我們都是通過putExtra 函式來傳遞簡單的String,int, long型別的值, 但是現在存在這樣一個問題: 1)在Activity裡面有一個歌曲列表

ActivityManager獲得正在執行的activityservice

ActivityManager mActivityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE) ;

Android activityservice傳遞資料

方式一:Activity向Service傳遞資料 在activity中,設定要傳遞的值。 Intent intent = new Intent(Main.this, DownloadS

Android — ActivityService互動之Binder總結

最近在複習Android跨程序呼叫,整理了一下自己對Binder的一些理解,希望能對大家也有所幫助,如有錯誤歡迎指正~ 為了加深理解,希望看完後能自己操練驗證一下,要不真的很容易眼高手低哦 ps:不想細看,可以只看裡面的3張圖片即可~ ^_^ 好了,迴歸

ActivityService的那些事

       服務作為Android的四大元件之一,它並不像Activity那樣高調(使用頻繁),它就是那個默默無聞的工作者。        由於不怎麼用到,所以關於它的使用很容易忘記,現在有空就將它記錄下來,方便後期檢視。        服務(Service)是Andro

C# 編寫Windows Service(windows服務程序

init override services ges 計算 public control etime 令行 Windows Service簡介: 一個Windows服務程序是在Windows操作系統下能完成特定功能的可執行的應用程序。Windows服務程序雖然是可執行

詳解Maven項目利用java service wrapper將Java程序生成Windows服務

XML mac linear font english resources mat 必須 parameter 在項目的開發中,有時候需要將Java應用程序打包成Windows服務,我們就直接可以通過windows的服務來啟動和關閉java程序了。 本博文將通過有兩種方法實現

(轉)如何使VMware ip本機ip處於同一網段

高級 nat 接下來 scripts post ica 我的電腦 n-n ipaddr 如何使VMware ip與本機ip處於同一網段 原創 2017年05月08日 17:28:56 1287 首先確認本機ip 可以看出一下信息: 本機ip: 192.16

Android如何配置init.rc中的開機啟動程序(service)

轉載。 http://blog.csdn.net/qq_28899635/article/details/56289063 開篇:為什麼寫這篇文章 先說下我自己的情況,我是個普通的學生,之前在學校一直做Android應用開發,找實習的時候也一直想找相關的工作,來到現在這家公司以

淺談服務治理、微服務Service Mesh(三) Service MeshServerless

作為本系列文章的第三篇(前兩篇《淺談服務治理、微服務與Service Mesh(一)Dubbo的前世今生》,《淺談服務治理、微服務與Service Mesh(二) Spring Cloud從入門到精通到放棄》),本文主要為大家介紹一下當前非常火熱的Service

BindService啟動的Service為何在Activity銷燬時自動解綁(Service銷燬時也是一樣處理)

以bindService啟動服務後,直接退出Activity,日誌會輸出:     ActivityThread: Activity com.example.administrator.layoutmanager.MainActivity has leaked Se

Android bind service講解以及跨程序通訊

** Android bind service講解以及Messenger跨程序通訊 ** android service是執行在後臺的程式,說白了,就是沒有介面,這裡我想強調的一點是,執行在後臺不等於執行在非主執行緒,除了IntentServi