सबसे पहले, निम्नलिखित की तरह Asynctask या IntentService का उपयोग कर, अपनी पोस्ट वर्ग बनाने ...
public class PostIntentService extends IntentService implements PostTask.Observer {
private int counter = 0;
private int retry = 2;
private Data mData;
public PostIntentService() {
super("PostIntentService");
}
@Override
protected void onHandleIntent(Intent intent) {
mData = (Data) intent.getSerializableExtra("data");
// send updating status
Intent i = new Intent();
i.setAction(PostResponseReceiver.ACTION_RESPONSE);
i.addCategory(Intent.CATEGORY_DEFAULT);
i.putExtra("status", "updating");
sendBroadcast(i);
execute();
counter++;
}
@Override
public void onSuccessPost(String result) {
// send success status
Intent i = new Intent();
i.setAction(PostResponseReceiver.ACTION_RESPONSE);
i.addCategory(Intent.CATEGORY_DEFAULT);
i.putExtra("status", "success");
sendBroadcast(i);
}
@Override
public void onFailedPost(String result) {
if (counter < retry) {
execute();
counter++;
}
else {
// send failed status
Intent i = new Intent();
i.setAction(PostResponseReceiver.ACTION_RESPONSE);
i.addCategory(Intent.CATEGORY_DEFAULT);
i.putExtra("status", "failed");
i.putExtra("data", mData);// for reproduct
sendBroadcast(i);
}
}
private void execute() {
PostTask task = new PostTask(this);
task.execute();
}
}
दूसरे में, अपने वर्ग (बढ़ाया BroadcastReceiver) जो आशय जब एक पोस्ट समाप्त प्राप्त करता है बनाएँ।
public class PostBroadcastReceiver extends BroadcastReceiver {
public static final String ACTION_RESPONSE = "com.example.android.intent.action.POST_PROCESSED";
private static final int POST_REQUEST = 100;
private Observer mObserver;
public PostBroadcastReceiver(Observer observer) {
mObserver = observer;
}
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getStringExtra("status").equals("updating")) {
}
else if (intent.getStringExtra("status").equals("success")) {
if (mObserver != null) {
mObserver.onPostFinished();
}
}
else if (intent.getStringExtra("status").equals("failed")) {
if (mObserver != null) {
mObserver.onPostFailed();
}
}
}
public interface Observer {
public void onPostFinished();
public void onPostFailed();
}
}
इस सेवा को अपनी मैनिफेस्ट फ़ाइल में पंजीकृत करें।
<service android:name=".PostIntentService" />
इस मुख्य व्यक्ति को अपनी मुख्य गतिविधि के निर्माण में पंजीकृत करें।
IntentFilter filter = new IntentFilter(PostBroadcastReceiver.ACTION_RESPONSE);
filter.addCategory(Intent.CATEGORY_DEFAULT);
receiver = new PostResponseReceiver(this);
registerReceiver(receiver, filter);
और अपनी मुख्य गतिविधि में निम्न विधि लागू करें।
public void onPostFinished() {
Log.d("onPostFinished", "onPostFinished");
}
public void onPostFailed() {
Log.d("onPostFailed", "onPostFailed");
}
भूलें मत भूलना इस मुख्य व्यक्ति को अपने मुख्य गतिविधि के डेस्ट्रॉय में पंजीकृत करें।
unregisterReceiver(receiver);
अंत में, अपनी लॉगिन गतिविधि में स्थानांतरण निष्पादित करें।
Intent intent = new Intent(this, PostIntentService.class);
intent.putExtra("data", mData);
startService(intent);
आप आसानी से इस बात के लिए एक BroadcastReceiver बना सकते हैं, हालांकि आप भी एक समर्पित लॉगिन गतिविधि कर सकते हैं, तो इंतज़ार कर एक बार काम पूरा करता है या तो एक नया गतिविधि या 'खत्म() का शुभारंभ उपयोगकर्ता रखने' वर्तमान एक जाने के लिए वापस। –
क्या आपने 'हैंडलर' की कोशिश की है? यदि नहीं, तो एक बार कोशिश करें। –