2011-07-30 26 views
14

Android'in tasarımının ardındaki mantığı, faaliyetleri basit bir yönelim değişikliğinde yok etmek ve yeniden oluşturmak hiç kim bilmiyor mu?Android neden Oryantasyon Değişikliği ile ilgili etkinlikleri yeniden yaratıyor

Etkinliğin kendini daha iyi, daha basit ve daha pratik bir tasarım olarak yeniden oluşturmasına izin vermemeli (eğer seçtiyse)?

BTW, oryantasyon değişikliği etkilerinden Uygulamamı devre dışı bırakma çok iyi biliyorum, ama ne ben gerçekten alamadım

+1

Bu bir programlama sorusudur. Android meraklıları Android kullanıcıları için daha fazla. Sorunu StackOverflow'a taşıyorum. –

+0

Başlangıçta burada yayınlamayı düşünüyordu ama ait olup olmadığından emin değildi. Bunu temizlediğin için teşekkürler :) –

cevap

1

Dont benim tahminim tam olarak neden biliyor Android'de bu tasarım için nedenidir çünkü ekrandaki etkinliği yeniden yapılandırmak zorunda. OnCreate "Bundle savedInstanceState" değişkenini alır. Daha hızlı yeniden yükleme yapmak için verileri oraya kaydedebilirsiniz.

docs yılında
package com.android.hello; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 

public class HelloAndroid extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     mTextView = new TextView(this); 

     if (savedInstanceState == null) { 
      mTextView.setText("Welcome to HelloAndroid!"); 
     } else { 
      mTextView.setText("Welcome back."); 
     } 

     setContentView(mTextView); 
    } 

    private TextView mTextView = null; 
} 
8

, http://developer.android.com/guide/topics/resources/runtime-changes.html

o

yeniden başlatma davranış uygulaması otomatik alternatif kaynaklarla uygulamayı yeniden yükleyerek yeni yapılandırmalar uyum sağlamasına yardımcı olmak için tasarlanmıştır, belirtiyor.

+4

Peki yan etki olarak diğer pek çok soruna neden olduğunda gerçekten "yardım" etmiyor (örneğin AsyncTasks'ı sarkıtırken, Diyaloglar kesintisiz devam etmiyorlar şimdiye kadar karşılaştığım bazıları). Gerçekte gerekli olan her şey ekran üzerinde mevcut bileşenlerin yeniden çizilmesi/düzenlenmesi olduğunda, bunu (basit bir şekilde yok edilmeden ve yeniden oluşturulmadan) sağlamak için basit bir yol var mıdır? –

+5

Yeniden çizmenin daha fazlası gerekiyor. Android, 2 ekran yönlendirmesi için farklı kaynaklara (resimler, dizeler, temalar, stiller, düzenler, vb.) Sahip olmanızı sağlar. Bunları manuel olarak yeniden yüklemek, diyalogları ve asenkronleri ele almaktan çok daha fazla iş olacaktır. –

+2

Hmmm ... bir uygulamanın gerçekten ihtiyacı olan herhangi bir ek kaynağı yeniden yüklemesine izin vermekten çok daha 'hafif' bir etkinliği yok ediyor ve yeniden yaratıyor mu? –

1

Bu oldukça basit. Android, yönlendirme değişikliklerinde bir etkinliği yok eder ve yeniden oluşturur; böylece, (geliştirici) önceki düzeni kullanmaya devam etme veya başka birini kullanma ve uygulama seçeneğine sahip olmanıza olanak tanır.

+1

Haklısınız ama mantık tamamen yanlıştır. opinion_. Dokümanlar, yok etme hakkında şunları belirtir: '[..], ya etkinlik bittiği için ya da sistem geçici olarak alanın kaydedilmesi için bu etkinliğin örneğini yok ettiği için olabilir. ' Bu yönelim değişikliklerini dışlamaz, ancak bunun böyle çalıştığı garip görünüyor .. Şimdiye kadar, 'doğal' bir yok etmeyi başarabilmemin tek yolu ekranı döndürmek. Bir 'duraklama' ve ardından 'özgeçmiş' yapmak benim için daha mantıklı görünüyor. Ayrıca, 'özgeçmiş' bir yanlış isimdir, ama bir kenara. – pauluss86

İlgili konular