2011-10-07 12 views
25

का धागा जावा में सामान्य धागे के लिए के रूप में, एक AsyncTask की पृष्ठभूमि थ्रेड में कोई नाम देने के लिए क्या यह संभव है डिफ़ॉल्टनाम एक AsyncTask

private static final ThreadFactory sThreadFactory = new ThreadFactory() { 
    private final AtomicInteger mCount = new AtomicInteger(1); 

    public Thread newThread(Runnable r) { 
     return new Thread(r, "AsyncTask #" + mCount.getAndIncrement()); 
    } 
}; 

द्वारा एक नाम मैं, कि क्या करना चाहते हैं के रूप में जब मैं डिबग मैं जानना चाहता हूँ जो Asynctask एक सहायक कक्षा में एक विधि तक पहुँच रहा है चाहता हूँ।

+3

तुम्हारा क्या मतलब है, विस्तार नहीं कर सकते? इसका उपयोग करने के लिए आपको AsyncTask को विस्तारित करना होगा। क्यों न केवल डिफ़ॉल्ट कन्स्ट्रक्टर का विस्तार करें, और एक निजी सदस्य "नाम" जो आप कन्स्ट्रक्टर में सेट करते हैं? – Maggie

उत्तर

55

doInBackground() अंदर से इस कॉल करके देखें:

Thread.currentThread().setName("some custom name"); 
-5

आप एसिंक टास्क को क्यों नहीं बढ़ा सकते हैं जिसे मैं समझ नहीं पा रहा हूं।

मैं डीबगर के साथ अपने AsyncTask हजार बार बढ़ाता हूं जो मुझे दिखाता है कि AsyncTask कुचलना है।

public class MyAsyncTask extends AsyncTask<Void, Void, Void>{ 
} 

तो जैसे

+1

यदि मैं कक्षा को विस्तारित करना चाहता हूं तो मुझे doInBackground विधि को लागू करना होगा, और नाम के बारे में क्या होगा? यह एक डिफ़ॉल्ट नियंत्रक में नहीं है। – Dayerman

+0

फिर MyAsyncTask के अपने निर्माता बनाएं। जब आप AysncTask बनाते हैं, तो आप अपने asyncTask को init करने के लिए नए MyAsyncTask (स्ट्रिंग नाम) का उपयोग करते हैं। और मैं अभी भी समझ नहीं पा रहा हूं कि AsyncTask –

+1

के नाम से आपका क्या मतलब है नाम से मेरा मतलब कक्षा में पैरामीटर जोड़ना था जो एसिंक्टास्क का नाम है। मेरे प्रश्न की पहली टिप्पणी के रूप में। मेरा विचार है कि जब मैं नया थ्रेड "AsyncTask #" + mCount.getAndIncrement() + name) बनाता हूं तो नाम जोड़ना है; उदाहरण के लिए। – Dayerman

संबंधित मुद्दे