package com.d3.d3xmpp.util; import android.annotation.SuppressLint; import android.app.ProgressDialog; import android.content.Context; import android.os.AsyncTask; import com.d3.d3xmpp.R; public abstract class XmppLoadThread { boolean isHint; ProgressDialog mdialog; private Context c; // private ExecutorService FULL_TASK_EXECUTOR; @SuppressLint("NewApi") public XmppLoadThread(Context _mcontext) { isHint = true; c = _mcontext; // FULL_TASK_EXECUTOR = (ExecutorService) Executors.newCachedThreadPool(); new AsyncTask<Void, Integer, Object>() { @Override protected Object doInBackground(Void... arg0) { return load(); } @Override protected void onPostExecute(Object result) { if (isHint && (mdialog == null || !mdialog.isShowing())) { return; } else { try { result(result); if (isHint && (mdialog != null && mdialog.isShowing())) { mdialog.dismiss(); } } catch (Throwable e) { e.printStackTrace(); } } } @Override protected void onPreExecute() { if (isHint) { try { mdialog = ProgressDialog.show(c, c.getResources().getString(R.string.dialog_title), c .getResources().getString(R.string.dialog_load_content)); mdialog.setCancelable(true); mdialog.setContentView(R.layout.dialog_loadding); mdialog.setIndeterminateDrawable(c.getResources().getDrawable(R.drawable.progress_dialog_style)); } catch (Exception e) { e.printStackTrace(); } } } }.execute(); } protected abstract Object load(); protected abstract void result(Object object); }