2016-04-11 17 views
0

'u tamamlamak için iki eşzamansız var. Bir asynctask çağrılır ve diğeri, birincisinin onPostExecute içinde çağrılır. Bu görev, kullanıcı bir düğmeyi tıkladığında oldu. Sorun, kullanıcı düğmeye hızlı bir şekilde tıkladığında başlatılan ve henüz tamamlanmamış ikinci asynctask'ın beklemediği görevdir.Verileri Eşitleme Çoklu AsyncTask,

Görev 1 -> Görev 1 - -> Görev kullanıcıları çok hızlı tıkladığında oluyor sona erdi Ne

BT çalışan Görev 1'dir eklemek için> artım sütun -> bir sütuna yerleştirin OnPostExecute Görev 2 başlar 2 -> Görev 2 Bu, her iki sütun ekinde de sütunlar eşitlenmeden önce aynı sütun üzerine eşleme ile sonuçlandı (görev 2).

Bunu nasıl düzeltirim? Bir bakıma, gerçek zamanlı olmasını ve birden çok kullanıcıyla çalışmasını istiyorum. İki farklı SQL sorgum var, biri bir sütundaki değeri güncellemek ve biri geçerli sütunu güncelleştirmek için bir sonraki sütunda sonraki ekleme var. MYSQL kullanıyorum.

Teşekkürler.

+1

Neden bu iki AsyncTasks ile başlamalıdır? Atomik bir operasyon gibi görünüyor. Daha da iyisi, MYSQL'in otomatik artışını kullanın veya kullanıcının bir UUID oluşturmasını sağlayın. – 323go

+0

İşletim eklenmiyor, ancak güncelleme yapılmazsa nasıl otomatik olarak artarım. ve ayrıca bu şekilde belirli bir sayıya ulaştığında değeri sıfırlayabilir. Kullanıcılar kullanıcılara giriş yaptı. MYSQL veritabanında benzersizdir. – Denominator

+1

Bu bir yanıltıcı sorudur. Bir kullanıcının bir görevi bir kereden fazla yürütmesini nasıl engelleyeceğinizi soruyorsunuz ama gerçekten bilmek istediğiniz şey, senkronizasyon veya veriyi birden çok cihazda nasıl kullanacağınız. Sorunuzu yanıtlamak için belki de – tyczj

cevap

0

Burada işlem yapmakta olduğunuz gibi geliyor. Bkz: Using Transactions

Eğer işlem kullanmak istemiyorsanız, başka bir seçenek semaforları kullanarak bir yapımcı/tüketici yapmak olacaktır. 1 token ile semaphore initalize. Görev 1, önce bir semafor elde ederdi. Görev 2'nin sonunda, görev 2 bir semaforu serbest bırakırdı. Bu nedenle, bir seferde sadece 1 zincirin işlenmesini sağlıyorsunuz.