Android'de Niyet Nedir?


347
  • 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?

Windows gibi mesaj tabanlı İşletim sistemi ve onlara mesaj göndermek ile programlamak için kullanıcı girişi bildirmek, bunu yapmak için android kullanarak!
AminM

Yanıtlar:


486

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.


1
@Chirag Raval Niyet ve eylem dinleyicisi arasındaki fark nedir?
mayooran

1
Lütfen son cümleyi tekrar açıklayabilir misiniz? Eğer ateş etmek istiyorsanız ..
Shafizadeh

1
C # delegates benzer?
Paul

Aslında eylem, bir niyet kullanarak bir bileşeni başka bir bileşenden başlatabileceğiniz anlamına gelir. Öncelikle bunun için kullanılır.
Sreekanth Karumanaghat

Buna ek olarak ... Niyet eşzamansızdır.
Sreekanth Karumanaghat

165

Niyet nedir?

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:

  • API çağrıları eşzamanlıyken, kasıt tabanlı çağrılar eşzamansızdır.
  • API çağrıları derleme zamanı bağlayıcıdır, kasıt tabanlı çağrılar çalışma zamanı bağlayıcıdı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:

  • Çalışma zamanında bileşenleri karıştırın ve eşleştirin veya daha çok tak ve çalıştır.
  • Dahili Android uygulamalarını özel geliştirilmiş uygulamalarla değiştirme.
  • Uygulama içinde ve arasında bileşen düzeyinde yeniden kullanım.
  • En seçici düzeyde servis yönelimi diyebilirim.

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.

Daha fazla bilgi edin


4
Bu açıklamada bilgisayar bilimi kavramlarının kullanılmasını takdir ediyorum. Bu, tartışmayı daha somut ve özellikle bilgisayar bilimlerinde katı bir derece olan okuyucular için yararlı hale getirir.
Donal Lafferty

49

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:

1.Özel Amaçlar

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.

2.Önemli Amaçlar

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

Amaç Filtreleri

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

1.Manifest dosyası

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.

2.BroadCast Alıcı

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.


12

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.


Amaçlar, faaliyetler arasında geçiş yapmaktan daha fazlası içindir. Genel bir bakış vermek daha yararlı olacaktır.
Vaddadi Kartick

@KartickVaddadi Puanınızı kabul edin. Niyetin tek kullanımı için cevabım buydu!
Paresh Mayani

Paresh, bağlantı blog.vimviv.com/android/intent-android artık çalışmıyor :(
user2060383

9

Android Amacı

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:

  1. Geçerli Etkinlikten başka bir Etkinlik veya Hizmet açma
  2. Etkinlikler ve Hizmetler arasında veri aktarımı
  3. Sorumluluğu başka bir uygulamaya devredin. Örneğin, bir URL görüntülemek üzere tarayıcı uygulamasını açmak için Amaçlar'ı kullanabilirsiniz.

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


9

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);
}

8

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.


5

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


2

Niyet, bazı eylemler için bilgileri bağlayan bir sınıftır.

örnek: kullanıcı bu tür eylemleri gerçekleştirdiğinde verilerin bir etkinlikten başka bir etkinliğe geçirilmesi

şimdiki aktivite.


1

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.


0

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.


0

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

  1. Android, amaçlarla basit bir IPC (süreçler arası iletişim) biçimini destekler
  2. Niyetli mesajlaşma, Android bileşenleri (aktivite, hizmet, içerik sağlayıcılar, yayın alıcısı) arasında eşzamansız iletişim için bir çerçevedir
  3. Bu bileşenler aynı veya farklı uygulamalarda (yani işlemler) çalışabilir
  4. Abone mesajlaşma alanlarını yayınlamanın yanı sıra noktadan noktaya da etkinleştirir
  5. Niyetin kendisi, gerçekleştirilecek işlemin açıklamasını ve alıcılara iletilecek verileri içeren bir mesajı temsil eder.

Gönderen bu parçacığı android mimarı Dianne Hackborn basit bir cevap olarak devletler data containerhangi 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. BinderAndroid mimarisi bakış açısından üzerine inşa edilmiştir .


0

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

  1. Örtük niyetler.

  2. Açık niyetler.

Yeni başlayanlar olarak bu kadarını biliyorum, bence bu android niyetleri hakkında bazı temel fikirler verecek


2
Lütfen soruları nasıl cevaplayacağınızla ilgili bu bağlantıyı okuyun .
Bonatti
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.