Hizmet Arayüzü
![Hizmet Arayüzü](https://jeffbezosweb.com/wp-content/uploads/2022/08/ver.jpeg)
Hizmet Arayüzü Tanımlama
Bir uzaktan hizmet örneği göstermek için, bir hisse senedi-kotasyon hizmeti yazacağız. Bu hizmet, bir hisse senedi simgesi alan ve hisse senedi değerini döndüren bir yöntem sağlayacaktır. Android’de uzak hizmet yazmak için ilk adım, hizmet tanımını bir AIDL dosyasında tanımlamaktır. Liste, IStockQuoteService’in AIDL tanımını gösterir.
IStockQuoteService, hisse senedi simgesi sembolünü bir dize olarak kabul eder ve mevcut hisse senedi değerini bir çift olarak döndürür. AIDL dosyasını oluşturduğunuzda, Android Eclipse eklentisi, AIDL dosyanızı işlemek için (derleme sürecinin bir parçası olarak) AIDL derleyicisini çalıştırır.
AIDL dosyanız başarıyla derlenirse, derleyici RPC iletişimi için uygun bir Java arabirimi oluşturur. Oluşturulan dosyanın bu durumda AIDL dosyanızda com.syh adlı pakette olacağını unutmayın.
Liste, IStockQuoteService’imiz için oluşturulan Java dosyasını gösterir. Android 1.5 SDK kullanıyorsanız, oluşturulan dosyanın gen klasörü içinde olacağını unutmayın.
Oluşturulan sınıflarla ilgili aşağıdaki önemli noktalara dikkat edin:
• AIDL dosyasında tanımladığımız arayüz, oluşturulan kodda bir arayüz olarak uygulanır (yani, IStockQuoteService adlı bir arayüz vardır).
• Stub adlı statik bir son soyut sınıf, android.os.Binder’ı genişletir ve IStockQuoteService’i uygular. Sınıfın soyut bir sınıf olduğunu unutmayın.
• Proxy adlı bir iç sınıf, Stub sınıfını temsil eden IStockQuoteService’i uygular.
•AIDL dosyası, oluşturulan dosyaların olması gereken paketin içinde bulunmalıdır (AIDL dosyasının paket bildiriminde belirtildiği gibi).
Şimdi devam edelim ve AIDL arayüzünü bir servis sınıfında uygulayalım.
AIDL Arayüzü Uygulamak
Bir önceki bölümde, bir hisse senedi alıntı hizmeti için bir AIDL dosyası tanımladık ve bağlama dosyasını oluşturduk. Şimdi bu hizmetin bir uygulamasını sağlayacağız. Hizmetin arayüzünü uygulamak için android.app.Service’i genişleten ve IStockQuoteService arayüzünü uygulayan bir sınıf yazmamız gerekiyor.
Hizmeti istemcilere göstermek için onBind() yönteminin bir uygulamasını sağlamamız ve AndroidManifest.xml dosyasına bazı yapılandırma bilgileri eklememiz gerekiyor. Liste IStockQuoteService arabiriminin bir uygulamasını gösterir.
Listing’deki StockQuoteService.java sınıfı, daha önce oluşturduğumuz yerel BackgroundService’e benzer. Birincil fark, artık onBind() yöntemini uygulamamızdır. AIDL dosyasından oluşturulan Stub sınıfının soyut bir sınıf olduğunu ve IStockQuoteService arabirimini uyguladığını hatırlayın.
Hizmeti uygulamamızda, StockQuoteServiceImpl adlı Stub sınıfını genişleten bir iç sınıfımız var. Bu sınıf, uzaktan hizmet uygulaması olarak hizmet eder ve bu sınıfın bir örneği onBind() yönteminden döndürülür. Bununla birlikte, harici istemciler henüz ona bağlanamasa da işlevsel bir AIDL hizmetimiz var.
Hizmeti istemcilere göstermek için AndroidManifest’e bir hizmet bildirimi eklememiz gerekiyor. xml dosyası ve bu sefer hizmeti ortaya çıkarmak için bir niyet filtresine ihtiyacımız var. Liste, StockQuoteService için hizmet bildirimini gösterir.
Tüm servislerde olduğu gibi, göstermek istediğimiz servisi bir <service> etiketi ile tanımlarız. Bir AIDL hizmeti için, ortaya çıkarmak istediğimiz hizmet arabirimi için bir <eylem> girdisi içeren bir <intent-filter> eklememiz gerekir.
Bununla birlikte, hizmeti dağıtmak için ihtiyacımız olan her şeye sahibiz. Şimdi başka bir uygulamadan (elbette aynı cihaz üzerinden) servisi nasıl çağıracağımıza bakalım.
Kullanıcı arayüzü nedir
Kullanıcı arayüzü örnekleri
Modem arayüzü
Arayüz Tasarımı örnekleri
Modem arayüzü giriş
Kullanıcı arayüzü Tasarımı
Kullanıcı arayüzü tasarımı Nedir
Kullanıcı arayüzü Tasarımı dersi
Hizmeti İstemci Uygulamasından Çağırma
Bir müşteri bir hizmetle konuştuğunda, ikisi arasında bir protokol veya sözleşme olmalıdır. Android ile sözleşme AIDL’dir. Bu nedenle, bir hizmeti tüketmenin ilk adımı, hizmetin AIDL dosyasını alıp müşteri projenize kopyalamaktır.
AIDL dosyasını istemci projesine kopyaladığınızda, AIDL derleyicisi, hizmet uygulandığında (hizmet uygulama projesinde) oluşturulan aynı arabirim tanımlama dosyasını oluşturur. Bu, müşteriye hizmetteki tüm yöntemleri, parametreleri ve dönüş türlerini gösterir. Yeni bir proje oluşturalım ve AIDL dosyasını kopyalayalım.
1. ServiceClient adlı yeni bir Android projesi oluşturun.
2. com.syh adlı yeni bir Java paketi oluşturun.
3. IStockQuoteService.aidl dosyasını pakete kopyalayın.
Dosyayı projeye kopyaladıktan sonra, AIDL derleyicisinin ilişkili Java dosyasını oluşturacağını unutmayın.
Yeniden oluşturduğunuz hizmet arabirimi, müşteri ile hizmet arasındaki sözleşme görevi görür. Bir sonraki adım, getQuote() yöntemini çağırabilmemiz için hizmete bir referans almaktır.
Uzak hizmetlerde, startService() yöntemi yerine bindService() yöntemini çağırmamız gerekir. Listeleme, IStockQuoteService hizmetinin istemcisi olarak davranan bir etkinlik sınıfını gösterir. Liste, etkinlik için düzen dosyasını da içerir.
Devam etmek için main.xml adında bir düzen dosyası oluşturun ve ana dosyanın içeriğini kopyalayın. Listeden xml bölümü. Ardından com.sayed adında yeni bir Java paketi oluşturun ve bu paket içinde MainActivity adlı bir aktivite oluşturun.
Son olarak, MainActivity bölümünün içeriğini Listing’den aktivitenize kopyalayın. Aktivitenin paket adının o kadar da önemli olmadığını anlayın, aktiviteyi istediğiniz herhangi bir pakete koyabilirsiniz. Ancak, AIDL derleyicisi AIDL dosyasının içeriğinden kod ürettiğinden, oluşturduğunuz AIDL yapıları pakete duyarlıdır.
Etkinlik, onClick dinleyicisini iki düğme için bağlar: Bind ve UnBind. Kullanıcı Bind düğmesini tıklattığında, etkinlik bindService() yöntemini çağırır. Benzer şekilde, kullanıcı UnBind’i tıklattığında etkinlik unbindService() yöntemini çağırır.
bindService() yöntemine üç parametrenin iletildiğine dikkat edin: AIDL hizmetinin adı, bir Hizmet Bağlantısı örneği ve hizmeti otomatik oluşturmak için bir işaret.
Bir AIDL hizmetiyle, ServiceConnection arabiriminin bir uygulamasını sağlamanız gerekir. Bu arabirim iki yöntemi tanımlar: hizmetle bağlantı kurulduğunda sistem tarafından çağrılan ve hizmetle bağlantı koptuğunda çağrılan bir yöntem.
Etkinlik uygulamamızda, IStockQuoteService için ServiceConnection’ı uygulayan özel bir anonim üye tanımlıyoruz. bindService() metodunu çağırdığımızda referansı bu üyeye iletiyoruz. Hizmetle bağlantı kurulduğunda, Stub kullanarak IStockQuoteService’e bir başvuru alırız ve ardından getQuote() yöntemini çağırırız.
bindService() çağrısının eşzamansız bir çağrı olduğunu unutmayın. İşlem veya hizmet çalışmıyor olabileceği ve bu nedenle oluşturulması veya başlatılması gerekebileceği için eşzamansızdır. bindService() eşzamansız olduğundan, platform ServiceConnection geri aramasını sağlar, böylece hizmetin ne zaman başlatıldığını ve hizmetin ne zaman kullanılamadığını biliriz.
Artık bir AIDL arayüzü oluşturmayı ve kullanmayı biliyorsunuz. Devam etmeden ve işleri daha da karmaşık hale getirmeden önce, AIDL hizmetine karşı basit bir yerel hizmet oluşturmak için neler gerektiğini gözden geçirelim. Yerel hizmet, onBind()’i desteklemeyen bir hizmettir; onBind()’den null değerini döndürür. Bu hizmet türüne yalnızca hizmeti barındıran uygulamanın bileşenleri erişebilir. startService() öğesini çağırarak yerel hizmetleri çağırırsınız.
Öte yandan, bir AIDL hizmeti, hem aynı süreç içindeki bileşenler tarafından hem de diğer uygulamalarda bulunan bileşenler tarafından tüketilebilen bir hizmettir. Bu hizmet türü, bir AIDL dosyasında kendisi ve müşterileri arasında bir sözleşme tanımlar.
Hizmet, AIDL sözleşmesini uygular ve istemciler AIDL tanımına bağlanır. Hizmet, onBind() yönteminden AIDL arabiriminin bir uygulamasını döndürerek sözleşmeyi uygular. İstemciler bindService()’i çağırarak bir AIDL hizmetine bağlanır ve unbindService()’i çağırarak hizmetle bağlantılarını keserler.
Şimdiye kadarki hizmet örneklerimizde, kesinlikle basit Java ilkel tiplerini iletmeyi ele aldık. Android hizmetleri aslında karmaşık türleri de geçirmeyi destekler. Bu, özellikle AIDL hizmetleri için çok kullanışlıdır, çünkü bir hizmete iletmek istediğiniz açık uçlu sayıda parametreye sahip olabilirsiniz ve bunların hepsini basit ilkel öğeler olarak iletmek mantıksızdır.
Web sitelerinizi, arama motorlarında en yukarı getirmek adına sizlere 3 adet paket öneriyoruz. Bu paketler sayesinde web siteleriniz aramalarda 1 yıl içerisinde en yukarıya tırmanacaktır.
1) Backlink Paketi 50 $ (Yıllık Ücret)
2) Hızlandırma Paketi 300 $ (Yıllık Ücret)
3) Kelime Yönlendirme Paketi 150 $ (Aylık Ücret)