2011-05-26 12 views
14

Merhaba ben 2 sınıflar arasındaki maksat android geçmesini dışarı çalışıyorum ve geçen niyet için 2 yöntem vardır fark ettik tümgetIntent() ile savedInstanceState öğesinden gelen niyet arasındaki fark nedir?

burada getIntent yöntemiyle ilk:

Bundle extras = getIntent().getExtras(); 
mRowId = (extras != null) ? extras.getLong(DrugsDbAdapter.KEY_ROWID) : null; 

Ve Ben o zaman fetchData için kullanabileceğiniz rowID erişmeye çalışıyorum Her iki yöntemde de

mRowId = (savedInstanceState != null) savedInstanceState.getLong(DrugsDbAdapter.KEY_ROWID) : null; 

: ikinci yöntem savedInstanceState erişiyor. Her iki yöntem arasındaki fark nedir? Hangisi daha iyi ?

+3

İkinci durumda satırınızı alır mısınız? Yapmadığınızı varsayalım, çünkü "SaveInstanceState" boşsa, "SörfEnstanceState" 'e birşey koymazsanız boştur. – ernazm

+0

Kayıt için ikinci yöntem almıyor ya da "niyetleri geçiyor". Her iki yöntem de anahtar değer çiftlerinin * Bundle * değerini alıyor. Muhtemelen demek istediğin buydu. getEntent(). getExtras() ', bir kurucuya iletilen parametrelere benzer bir şey verir. "savedInstanceState", bir noktada kaydedilen etkinliğin durumuna benzer. – LarsH

cevap

12

İlk durumda, bu aktiviteyi başlatan niyetin ekstraları verilirken, ikincisi onCreate çağrıldığında 2. ve daha fazla süre, örneğin cihaz üzerinde döndürüldüğünde kullanılır. Bu paket onSaveInstanceState'da doldurulmalıdır.

+0

Şimdi bunu anlamaya çalışıyorum - kullanıcı ekranı döndürürse, Etkinlik ilk oluşturulduğunda aldığı aynı Niyeti tekrar alıyor mu? – leoneboaventura

+0

getIntent() aynı amaçlarla aynı amacı döndürecektir. Ama BundleInstanceState'in Bundle argümanı farklı bir şeydir. – ernazm

11

getIntent(), bu Activity numaralı telefonu başlattığınızı bildirmek için kullanılır. Activity'un her yerinde erişilebilir. Bundle vardır, ancak başka meta verileri de vardır. Bir sonraki başlangıç ​​tarihine kadar uygulamanızda örnek değişkenlerini devam ettirmek için onSaveInstanceState(Bundle), bir Bundle geçirir. Bu Bundle yalnızca onCreate() ve onRestoreInstanceState()'da gelir ve başka veri içermez.

+0

Teşekkürler Nicholas! – jamen

İlgili konular