搜尋

首頁  >  問答  >  主體

android相關問題 - Android 如何讓引入的lib庫中的Service在系統中唯一

首先,我有一個lib函式庫,函式庫裡面定義了以個Service:

<application
    android:allowBackup="true"
    android:label="@string/app_name"
    android:supportsRtl="true">
    <service
        android:name=".SharedService"
        android:process="com.lib.aidl.SharedService"
        android:enabled="true"
        android:exported="true">
    </service>
</application>

現在,加入有兩個app都引進了這個函式庫,然後在各自的程式碼裡都呼叫了:

startService(new Intent(context, SharedService.class))

我現在想的是系統中應該只有一個SharedService的實例,在進程com.lib.aidl.SharedService中。

但是實際情況是有兩個SharedService的實例,它們都在進程名為com.lib.aidl.SharedService的進程中,但是進程id是不一樣的。這是為什麼?

我現在想讓系統中只出現一個SharedService的實例,當第二次呼叫startService時回呼onStartCommand方法,這個可以做到麼?

巴扎黑巴扎黑2781 天前594

全部回覆(1)我來回復

  • PHP中文网

    PHP中文网2017-05-16 13:23:35

    雷雷

    替換成

    雷雷

    嘗試

    注意,加了個':'

    運行服務的進程的名稱。通常,應用程式的所有元件都在為應用程式建立的預設進程中運行。它與應用程式包具有相同的名稱。 <套用>元素的 process 屬性可以為所有元件設定不同的預設值。但是元件可以使用自己的進程屬性來覆寫預設值,從而允許您將應用程式分佈在多個進程中。
    如果分配給該屬性的名稱以冒號(':')開頭,則一個新進程是該應用程式私有的在需要時創建並且服務在該進程中運行。如果進程名稱以小寫字元開頭,則服務將在該名稱的全域進程中運行,前提是它有權這樣做。這允許不同應用程式中的元件共享進程,減少資源使用。

    回覆
    0
  • 取消回覆