Isu berkaitan Android - Bagaimanakah Android menjadikan Perkhidmatan dalam perpustakaan lib yang diimport unik dalam sistem?
巴扎黑
巴扎黑 2017-05-16 13:21:35
0
1
587

Pertama sekali, saya mempunyai perpustakaan lib, yang mentakrifkan Perkhidmatan:

<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>

Sekarang, tambahkan dua apl yang telah memperkenalkan pustaka ini, kemudian panggil apl tersebut dalam kod masing-masing:

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

Apa yang saya fikirkan sekarang ialah hanya ada satu SharedService的实例,在进程com.lib.aidl.SharedService dalam sistem.

Tetapi keadaan sebenar ialah terdapat dua SharedService的实例,它们都在进程名为com.lib.aidl.SharedService proses, tetapi ID proses adalah berbeza. kenapa begitu?

Saya kini mahu hanya satu SharedService的实例,当第二次调用startService时回调onStartCommandkaedah muncul dalam sistem Adakah ini mungkin?

巴扎黑
巴扎黑

membalas semua(1)
洪涛

android:process="com.lib.aidl.SharedService"

替换成

android:process=":com.lib.aidl.SharedService"

试试

注意,加了个 ':'

Nama proses di mana perkhidmatan akan dijalankan. Biasanya, semua komponen aplikasi dijalankan dalam proses lalai yang dibuat untuk aplikasi itu. Ia mempunyai nama yang sama dengan pakej aplikasi. <aplikasi> atribut proses elemen boleh menetapkan lalai yang berbeza untuk semua komponen. Tetapi komponen boleh mengatasi lalai dengan atribut prosesnya sendiri, membolehkan anda menyebarkan aplikasi anda merentasi berbilang proses.
Jika nama yang diberikan kepada atribut ini bermula dengan titik bertindih (':'), proses baharu, peribadi kepada aplikasi, dibuat apabila ia diperlukan dan perkhidmatan berjalan dalam proses itu. Jika nama proses bermula dengan aksara huruf kecil, perkhidmatan akan berjalan dalam proses global nama itu, dengan syarat ia mempunyai kebenaran untuk berbuat demikian. Ini membolehkan komponen dalam aplikasi berbeza berkongsi proses, mengurangkan penggunaan sumber.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan