SORU
30 Aralık 2009, ÇARŞAMBA


Android Karşılama Resmi

Temelde uygulama başlangıcında çok miktarda veri yükler ve ListActivity içinde gösteren bir uygulama geliştiriyorum. Yapmayı planladığım şeyi verileri yüklenir kadar bir Ekranı göstermek.

Şu ana kadar tüm girişimleri boşuna olmuştur. Anddev.org bahsedilen yöntemleri denedim ama benim sorunum ana Faaliyet başlamalı ama Ekranı benim ListActivity doldurmak kadar görünür olmalıdır. Kısacası aşağıdaki adımları üzerinden gitmek zorunda kaldım:

  1. Benim asıl etkinlik başlar.
  2. Giriş Ekranını göster.
  3. Planda işlem çalışmasını sağlamak.
  4. İşlem tamamlandığında, karşılama resmi çıkış ve ana Listesini gösterir.

Sen nasıl bir şey olduğunu anlıyorum...umarım.

CEVAP
30 Aralık 2009, ÇARŞAMBA


Sorun tüm çalışmalar aynı konuya giriş ekranı (sanırım ProgressDialog Dialog çeşit) çalıştırıyorsanız büyük ihtimalle. Bu bile ekranda görüntülenen alıyorum onu tutmak olabilir, güncelleştirildi, anlık ekran görünümü devam edecektir. Görev tamamlandıktan sonra giriş ekranını, AsyncTask örneği tüm verileri indirmek gitmeye başlaması, giriş ekranını gizlemek gerekir.

Etkinlik onCreate() yöntemi yalnızca bir ProgressDialog oluşturmak ve bunu göstermek istiyorum. Sonra AsyncTask oluşturun ve başlatın. Etkinlik bazı değişken indirilmeden veri depolama ve onPostExecute içinde ProgressDialog yakın böylece AsyncTask ana Faaliyet bir iç sınıf olacaktı() yöntemi.

Artık sadece kod göstermeden ayrıntılı nasıl, işte bu yüzden emin değilim:

public class MyActivity extends Activity {
    private ProgressDialog pd = null;
    private Object data = null;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // Show the ProgressDialog on this thread
        this.pd = ProgressDialog.show(this, "Working..", "Downloading Data...", true, false);

        // Start a new thread that will download all the data
        new DownloadTask().execute("Any parameters my download task needs here");
    }

    private class DownloadTask extends AsyncTask<String, Void, Object> {
         protected Object doInBackground(String... args) {
             Log.i("MyApp", "Background thread starting");

             // This is where you would do all the work of downloading your data

             return "replace this with your data object";
         }

         protected void onPostExecute(Object result) {
             // Pass the result data back to the main activity
             MyActivity.this.data = result;

             if (MyActivity.this.pd != null) {
                 MyActivity.this.pd.dismiss();
             }
         }
    }    
}

Belli ki bazı parçaları doldurmak için gereken, ama bu kodu çalıştırmak ve vermek iyi bir başlangıç noktası (affet beni varsa bir hata kodu yok erişmek için Android SDK ben yazarak bu şu anda).

Biraz daha Android AsyncTasks konusunda iyi okuma here here bulunabilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Alexander Johnson

    Alexander Jo

    26 Temmuz 2008
  • macpulenta

    macpulenta

    9 EYLÜL 2006
  • Manuel Vizcaino

    Manuel Vizca

    27 Mayıs 2008