যদি HTTP সংযোগের সময়সীমা শেষ না হয়, আপনি ব্যাকগ্রাউন্ড থ্রেডে নিজেই টাইমআউট পরীক্ষককে প্রয়োগ করতে পারেন (AsyncTask, পরিষেবাদি, ইত্যাদি), নিম্নলিখিত শ্রেণিটি নির্দিষ্ট সময়ের পরে কাস্টমাইজ করা AsyncTask এর উদাহরণ যা
public abstract class AsyncTaskWithTimer<Params, Progress, Result> extends
AsyncTask<Params, Progress, Result> {
private static final int HTTP_REQUEST_TIMEOUT = 30000;
@Override
protected Result doInBackground(Params... params) {
createTimeoutListener();
return doInBackgroundImpl(params);
}
private void createTimeoutListener() {
Thread timeout = new Thread() {
public void run() {
Looper.prepare();
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (AsyncTaskWithTimer.this != null
&& AsyncTaskWithTimer.this.getStatus() != Status.FINISHED)
AsyncTaskWithTimer.this.cancel(true);
handler.removeCallbacks(this);
Looper.myLooper().quit();
}
}, HTTP_REQUEST_TIMEOUT);
Looper.loop();
}
};
timeout.start();
}
abstract protected Result doInBackgroundImpl(Params... params);
}
এই জন্য একটি নমুনা
public class AsyncTaskWithTimerSample extends AsyncTaskWithTimer<Void, Void, Void> {
@Override
protected void onCancelled(Void void) {
Log.d(TAG, "Async Task onCancelled With Result");
super.onCancelled(result);
}
@Override
protected void onCancelled() {
Log.d(TAG, "Async Task onCancelled");
super.onCancelled();
}
@Override
protected Void doInBackgroundImpl(Void... params) {
// Do background work
return null;
};
}
java.net.ConnectException: Connection timed out: connect
2 মিনিটেরও আগে ছোঁড়ে । আপনি কি জানেন যে সমস্যা সৃষ্টি করছে?