E.g .: आप कुछ ऐसा करने वाले हैं जो कुछ सेकंड लेगा और अपने यूआई थ्रेड को फ्रीज नहीं करना चाहता, है ना? आप एक AsyncTask का उपयोग कर सकते हैं लेकिन आप एक छोटी फ्रीज समस्या को हल करने के लिए बाहरी (या आंतरिक) वर्ग बनाना नहीं चाहते हैं।क्या एक अच्छा अभ्यास समानांतर छोटे ज्ञात फ्रीज प्रक्रिया के लिए अनाम AsyncTask बनाता है?
तो, क्या यह एक अच्छा प्रेटिस है?
package com.example.stackoverflowsandbox;
import android.os.AsyncTask;
public class Foo {
// E.g. before call foo method you change you Activity to loading state.
private void foo() {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(final Void ... params) {
// something you know that will take a few seconds
return null;
}
@Override
protected void onPostExecute(final Void result) {
// continue what you are doing...
Foo.this.continueSomething();
}
}.execute();
}
private void continueSomething() {
// some code...
}
}
मैं जब मैं बिटमैप कंप्रेस आइटम के अंदर कुछ डेटा अद्यतन करने के लिए बड़ा सरणी पाशन कि के साथ सामना किया है।
मैं देख रहा हूँ कि यह कैसे बचाता है न:
बजाय एक थ्रेड पूल निष्पादक का उपयोग किसी भी काम को बनाम एक आंतरिक वर्ग बनाते हुए, बस बहुत गन्दा आईएमओ – tyczj
लगता है यह निर्भर करता है ... केवल थाई एनजी क्या हो सकता है कि पृष्ठभूमि में गतिविधि डालने के बाद थ्रेड (AsyncTask) चल रहा है या नष्ट हो गया है। लेकिन आम तौर पर यह भयानक है, क्योंकि गुमनाम वर्ग को कोड में कहीं उधार लिया जाता है। –
केवल पठनीयता के प्रश्न के लिए, याद रखें कि अज्ञात आंतरिक वर्ग से उत्पन्न वस्तुओं को 'OuterClass $ 2' के नोटेशन के साथ बुलाया जाता है, और यदि आप आंतरिक कक्षा घोंसला शुरू करते हैं, तो डीबगजिन मुश्किल हो सकता है – Blackbelt