kzen.dev
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 2ndlife
2ndlife
Question

Android: Cara membuka ikatan layanan dengan aman

Saya memiliki layanan yang terikat dengan konteks aplikasi seperti ini:

getApplicationContext().bindService(
                    new Intent(this, ServiceUI.class),
                    serviceConnection,
                    Context.BIND_AUTO_CREATE
            );

protected void onDestroy() {
            super.onDestroy();                  
            getApplicationContext().unbindService(serviceConnection);
        }

Untuk beberapa alasan, hanya kadang-kadang konteks aplikasi tidak terikat dengan benar (saya tidak dapat memperbaiki bagian itu), namun di onDestroy () saya melakukan unbindservice yang melemparkan kesalahan

java.lang.IllegalArgumentException: Service not registered: tools.cdevice.Devices$mainServiceConnection.

Pertanyaan saya adalah: Apakah ada cara untuk memanggil unbindservice dengan aman atau memeriksa apakah sudah terikat ke layanan sebelum melepaskan ikatannya?

Terima kasih sebelumnya.

40 2011-12-23T09:34:24+00:00 3
 fersarr
fersarr
Pertanyaan edit 2 April 2014 в 6:45
Pemrograman
android
Pertanyaan ini memiliki :value jawaban dalam bahasa Inggris, untuk membacanya masuk ke akun Anda.
Solution / Answer
Andrey Novikov
Andrey Novikov
15 Januari 2012 в 8:57
2012-01-15T20:57:34+00:00
Lebih
Sumber
Sunting
#15039998

Coba ini:

boolean isBound = false;
...
isBound = getApplicationContext().bindService( new Intent(getApplicationContext(), ServiceUI.class), serviceConnection, Context.BIND_AUTO_CREATE );
...
if (isBound)
    getApplicationContext().unbindService(serviceConnection);

Catatan:

Anda harus menggunakan konteks yang sama untuk mengikat layanan dan melepaskan layanan. Jika Anda mengikat Layanan dengan getApplicationContext(), maka Anda juga harus menggunakan getApplicationContext.unbindService(..)

 AZ_
AZ_
Jawaban edit 23 Januari 2014 в 1:09
64
0
 Yury
Yury
23 Desember 2011 в 10:46
2011-12-23T10:46:37+00:00
Lebih
Sumber
Sunting
#15039997

Di sini Anda dapat menemukan penjelasan dan kode sumber yang bagus tentang bagaimana bekerja dengan layanan terikat. Dalam kasus Anda, Anda harus mengganti metode (onServiceConnected dan onServiceDisconnected) dari objek ServiceConnection. Kemudian Anda dapat memeriksa variabel mBound dalam kode Anda.

 VansFannel
VansFannel
Jawaban edit 6 Agustus 2012 в 4:40
7
0
Emil Blablablå
Emil Blablablå
2 Agustus 2012 в 2:44
2012-08-02T14:44:13+00:00
Lebih
Sumber
Sunting
#15039999

Melakukan apa yang diusulkan oleh Andrey Novikov tidak berhasil bagi saya. Saya langsung mengganti:

getApplicationContext().unbindService(serviceConnection);

Dengan:

unbindService(serviceConnection);
 DisplayName
DisplayName
Jawaban edit 2 Agustus 2012 в 2:59
5
0
Related communities 1
Android Studio Indonesia
Android Studio Indonesia
2 554 pengguna
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Daniel Gogov
Terdaftar 2 hari yang lalu
2
工藤 芳則
Terdaftar 1 minggu yang lalu
3
Ирина Беляева
Terdaftar 1 minggu yang lalu
4
Darya Arsenyeva
Terdaftar 2 minggu yang lalu
5
anyta nuam-nuam (LapuSiK)
Terdaftar 2 minggu yang lalu
ID
JA
© kzen.dev 2023
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi