- Android'de Niyet Nedir ?
- Birisi bir örnekle açıklayabilir mi?
- Niyet türleri nelerdir ve bunları neden kullanıyoruz?
- Android'de Amaçlar neden bu kadar önemlidir?
Yanıtlar:
Bir Niyet bir eylemi gerçekleştirmek için bir "niyet" dir; Diğer bir deyişle,
başka bir uygulama bileşeninden işlem istemek için kullanabileceğiniz bir mesajlaşma nesnesi
Niyet, temelde bir şey yaptığınızı veya bir şey olmasını istediğinizi belirten bir mesajdır. Niyete bağlı olarak, uygulamalar veya işletim sistemi onu dinliyor olabilir ve buna göre tepki verecektir. Bunu, arkadaşınıza John'a bir şey yapmasını söylediğiniz bir grup arkadaşınıza veya X yapmak için X ( "niyet filtreleri" ) yapabilen arkadaşlara bir e-posta olarak düşünün. Diğer insanlar e-postayı yok sayacak, ancak John (veya X yapabilen arkadaşlar) buna tepki verecektir.
Bir yayın hedefini dinlemek için (telefon çalıyor veya SMS alındı gibi), amaçtan geçirilecek bir yayın alıcısı uygularsınız . Başka birisinin "fotoğraf çek" gibi uygulama amacını işleyebileceğinizi beyan etmek için , uygulamanızın bildirim dosyasında bir amaç filtresi bildirirsiniz .
Çeviriciyi açmak gibi bir şey yapmak için bir niyet ateşlemek istiyorsanız, yapacağınızı söyleyen bir niyet ateşlersiniz.
Bir Niyet temelde arasına geçirilen bir mesajdır bileşenler (örneğin Faaliyetleri , Hizmetler, Yayın Alıcıları, ve İçerik Sağlayıcıları ). Dolayısıyla, neredeyse API çağrılarına geçirilen parametrelere eşdeğerdir. API çağrıları ve bileşenleri intents aracılığıyla çağırmak arasındaki temel farklar şunlardır:
Tabii ki, daha sonra açıklanacak olan açık niyetler kullanılarak API çağrıları gibi çalışmak için niyetler yapılabilir. Fakat çoğu zaman, örtük niyetler gidilecek yoldur ve burada açıklanan şey budur.
Bir başkasını çağırmak isteyen bir bileşen, yalnızca bir iş yapma niyetini ifade etmek zorundadır . Ve var olan ve böyle bir işi niyet filtreleriyle yapabileceğini iddia eden diğer herhangi bir bileşen , Android platformu tarafından işi gerçekleştirmek için çağrılır. Bu, her iki bileşenin de birbirlerinin varlığından haberdar olmadığı, ancak son kullanıcı için istenen sonucu vermek üzere birlikte çalışabileceği anlamına gelir.
Bileşenler arasındaki bu görünmez bağlantı, niyetler, niyet filtreleri ve Android platformunun birleşimi ile sağlanır.
Bu, aşağıdakiler gibi büyük olasılıklara yol açar:
Android dokümanlarından Amaçlar hakkında ek teknik ayrıntılar aşağıda verilmiştir .
Amaç, gerçekleştirilecek bir işlemin soyut bir tanımıdır. Kullanılabilir startActivity bir başlatmak için Aktivite, broadcastIntent herhangi ilgilenen göndermek için BroadcastReceiver bileşenleri ve (Niyet) StartService veya bindService (Niyet, ServiceConnection, int) bir arka plan hizmeti ile iletişim kurmak için.
Niyet, farklı uygulamalarda kod arasında geç çalışma zamanı bağlaması gerçekleştirmek için bir olanak sağlar. En önemli kullanımı, faaliyetler arasında tutkal olarak düşünülebilecek faaliyetlerin başlatılmasıdır. Temel olarak, gerçekleştirilecek bir eylemin soyut bir tanımını tutan pasif bir veri yapısıdır. Bir niyetteki temel bilgi parçaları şunlardır:
- eylem ACTION_VIEW, ACTION_EDIT, ACTION_MAIN vb. gibi gerçekleştirilecek genel eylem.
- data Kişiler veritabanındaki kişi kaydı gibi üzerinde çalışılacak veriler Uri olarak ifade edilir.
Amaçlar, Android'e ne yapmak istediğinizi söylemenin bir yoludur . Başka bir deyişle, niyetinizi tanımlarsınız. Amaçlar, Android sistemine belirli bir olayın meydana geldiğini bildirmek için kullanılabilir. Android'deki diğer bileşenler bir amaç filtresi aracılığıyla bu etkinliğe kaydolabilir.
Aşağıdakiler 2 tür niyettir:
belirli bir bileşeni çağırmak için kullanılır. Hangi bileşeni başlatmak istediğinizi bildiğinizde ve kullanıcıya hangi bileşeni kullanacağı konusunda ücretsiz kontrol vermek istemediğinizde. Örneğin, 2 etkinliği olan bir uygulamanız var. Etkinlik A ve etkinlik B. Etkinlik B'den etkinlik B'yi başlatmak istiyorsunuz. Bu durumda, açık bir amaç hedefleme etkinliğiB tanımlar ve daha sonra onu doğrudan çağırmak için kullanırsınız.
ne yapmak istediğiniz hakkında bir fikriniz olduğunda kullanılır, ancak hangi bileşenin başlatılması gerektiğini bilmezsiniz. Veya kullanıcıya, kullanılacak bileşenlerin listesi arasında seçim yapma seçeneği vermek istiyorsanız. Bu Amaçlar Android sistemine gönderilirse, belirli bir işlem ve veri türü için kaydedilmiş tüm bileşenleri arar. Yalnızca bir bileşen bulunursa, Android doğrudan bileşeni başlatır. Örneğin, fotoğraf çekmek için kamerayı kullanan bir uygulamanız var. Uygulamanızın özelliklerinden biri, kullanıcıya çektiği fotoğrafları gönderme imkanı vermenizdir. Kullanıcının fotoğraf gönderebilecek ne tür bir uygulamaya sahip olduğunu bilmiyorsunuz ve ayrıca kullanıcıya birden fazla varsa hangi harici uygulamayı kullanacağını seçme seçeneği vermek istiyorsunuz. Bu durumda, açık bir niyet kullanmazsınız.
İçeriği ne olursa olsun, açık bir niyet her zaman hedefine iletilir; filtreye başvurulmaz. Ancak bir bileşene, yalnızca bileşenin filtrelerinden birini geçebiliyorsa örtük bir amaç iletilir
Android sistemine bir Intents gönderilirse, bu Intents için uygun uygulamaları belirler. Bu tür Hedefler için birkaç bileşen kaydedildiyse, Android kullanıcıya bunlardan birini açma seçeneği sunar.
Bu belirleme IntentFilters tabanlıdır. IntentFilters, bir etkinliğin, hizmetin veya Broadcast Alıcının yanıt verebileceği Niyet türlerini belirtir. Niyet Filtresi, bir bileşenin yeteneklerini bildirir. Hareketsizliğin veya hizmetin neler yapabileceğini ve bir Alıcının ne tür yayınları işleyebileceğini belirtir. İlgili bileşenin, bildirilen türden Intents almasını sağlar. IntentFilters genellikle AndroidManifest.xml dosyası aracılığıyla tanımlanır. BroadcastReceiver için bunları kodlamada tanımlamak da mümkündür. IntentFilters kategorisi, eylemi ve veri filtreleriyle tanımlanır. Ayrıca ek meta veriler içerebilir.
Bir bileşen bir Intent filtresi tanımlamazsa, yalnızca açık Intents tarafından çağrılabilir.
Aşağıda, bir filtre tanımlamak 2 yolu
Manifestte niyet filtresini tanımlarsanız, uygulamanızın filtresinde tanımlanan amaçlara tepki vermek için çalışması gerekmez. Android, uygulamanız yüklendiğinde filtreyi kaydeder.
Yayın alıcınızın amacı yalnızca uygulamanız çalışırken almasını istiyorsanız . Ardından, çalışma zamanında (programlı olarak) amaç filtrenizi tanımlamanız gerekir. Bunun yalnızca yayın alıcıları için geçerli olduğunu unutmayın.
Tek bir etkinlik yazdıktan sonra, ilk etkinlikte bilgi olsun ya da olmasın başka bir görevi gerçekleştirmek için başka bir etkinliğe geçiş yapılması gerekir.
Android platformu, Intent Interface ile geçişe izin verir.
Kelimeler buradan alınır: Niyet Demosu kullanarak ve onlar da bir kod dosyası sağladıkları için bu örnek üzerinden gitmenizi öneririz. böylece onu kullanabilir ve kolayca anlayabilirsiniz.
Android Niyeti, bir android etkinliğinden diğerine gitmenizi sağlar. Örneklerle, bu eğitici aynı zamanda çeşitli Android amaçlarından bahsediyor.
Android Niyeti, 1 etkinlikten diğerine iletişim kurmak için kullanılan basit bir mesaj nesnesi olarak tanımlanabilir.
Amaçlar bir Uygulamanın amacını tanımlar. Ayrıca etkinlikler arasında veri aktarımı için de kullanılırlar.
Android Amacı aşağıdaki 3 görevi gerçekleştirmek için kullanılabilir:
Niyet genel olarak 2 kategoriye ayrılabilir. Bu kategori için hiçbir anahtar kelime ve sadece android amaçların nasıl kullanıldığı konusunda geniş bir sınıflandırma yoktur.
Açık Android Amacı
Açık Android Amacı, Android Sistemi tarafından çağrılması gereken bileşeni açıkça tanımladığınız Niyettir.
Intent MoveToNext = new Intent (getApplicationContext(), SecondActivity.class);
Örtülü Android Amacı
Örtülü Android Amaçları, tam bileşenleri tanımlamak yerine gerçekleştirmek istediğiniz eylemi tanımladığınız amaçtır. Bu eylemi gerçekleştirme kararı işletim sistemine bırakılmıştır. OS, örtük niyetler için hangi bileşenin çalıştırılacağına karar verir. Bir örnek görelim:
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
Daha fazla bilgi için aşağıyı ziyaret edebilirsiniz
http://developer.android.com/reference/android/content/Intent.html
Belgelerine göre:
Niyet, ayrı bileşenler (iki etkinlik gibi) arasında çalışma zamanı bağlaması sağlayan bir nesnedir. Niyet, bir uygulamanın "bir şey yapma niyeti" ni temsil eder. Amaçları çok çeşitli görevler için kullanabilirsiniz, ancak çoğu zaman başka bir etkinlik başlatmak için kullanılırlar.
Örnek bağlantı: http://developer.android.com/training/basics/firstapp/starting-activity.html#BuildIntent
Belgede açıklandığı gibi, bir faaliyet başlatmak için (aynı zamanda hangi faaliyetin ne olduğunu da anlamanız gerekir) amacı aşağıdaki gibi kullanın
/** Called when the user clicks the Send button */
public void sendMessage(View view) {
Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
Amaç, gerçekleştirilecek bir işlemin soyut bir tanımıdır. Bir Aktivite başlatmak için startActivity, broadcastIntent ile ilgili herhangi bir BroadcastReceiver bileşenine göndermek ve bir arka plan Hizmetiyle iletişim kurmak için startService (Intent) veya bindService (Intent, ServiceConnection, int) ile kullanılabilir.
Daha fazla ayrıntı için şu bağlantılara bakın:
1). http://developer.android.com/reference/android/content/Intent.html
2) http://developer.android.com/guide/topics/intents/intents-filters.html
3). http://www.vogella.de/articles/AndroidIntent/article.html
daha birçok makale var.
Niyet nedir?
Bileşenlere iletilen bir tür mesaj veya bilgidir. Bir etkinlik başlatmak, bir web sayfasını görüntülemek, sms göndermek, e-posta göndermek vb. İçin kullanılır.
Android'de iki tür niyet vardır:
Örtük Amaç Örtük
Amaç
Örtük niyet sistem bileşenlerini çağırmak için kullanılır
Misal
Intent i = newIntent(android.content.Intent.ACTION_VIEW,Uri.parse(“http://www.amazon.com”));
startActivity(i);
Etkinlik sınıfını çağırmak için açık niyet kullanılır.
Misal
Niyet niyeti = newIntent (this, SecondActivity.class);
startActivity(intent);
daha fazla okuyabilirsin
http://www.vogella.com/tutorials/AndroidIntent/article.html#intents_overview http://developer.android.com/reference/android/content/Intent.html
Geniş bir bakış açısı olarak, tanımlayabilir niyet olarak
Bir Etkinlik başka bir etkinlik başlatmak istediğinde, başlatmak istediğiniz Etkinliği belirten Niyet adlı bir Nesne oluşturur.
Bir Android uygulaması sıfır veya daha fazla etkinlik içerebilir. Uygulamanız birden fazla etkinliğe sahipse, genellikle birinden diğerine gitmeniz gerekir. Android'de, bir amaç olarak bilinen etkinlikler arasında gezinebilirsiniz. PutExtra () kullanarak bazı verileri niyet yoluyla başlatmak istediğiniz etkinliğe iletebilirsiniz.
Kağıt Deep Dive into Android IPC/Binder Framework atAndroid Builders Summit 2013
bağlantıdan
Amaç bazı küçük ama etkili çizgilerle anlaşılıyor
Gönderen bu parçacığı android mimarı Dianne Hackborn basit bir cevap olarak devletler data container
hangi gerçekte olduğundan.
Android mimarisi açısından :
Niyet, süreçler arası iletişim için kullanılan bir veri taşıyıcısıdır. Binder
Android mimarisi bakış açısından üzerine inşa edilmiştir .
Amaçlar bir aktiviteden başka bir aktiviteyi başlatmak için kullanılır. Temel olarak bir aktiviteden başka bir aktiviteye veri göndermek ve tetikleme amaçları gibi çeşitli amaçlar için kullanılır.
Temelde iki tiptir
Örtük niyetler.
Açık niyetler.
Yeni başlayanlar olarak bu kadarını biliyorum, bence bu android niyetleri hakkında bazı temel fikirler verecek