cari

Rumah  >  Soal Jawab  >  teks badan

Isu berkaitan Android - Bagaimanakah Android menjadikan Perkhidmatan dalam perpustakaan lib yang diimport unik dalam sistem?

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?

巴扎黑巴扎黑2743 hari yang lalu559

membalas semua(1)saya akan balas

  • PHP中文网

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

    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.

    balas
    0
  • Batalbalas