Guest User

Untitled

a guest
Dec 13th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.86 KB | None | 0 0
  1. HttpTask menuTask = new HttpTask(this, getApp().getHttp());
  2. menuTask.connect(new HttpTaskHandler(this) {
  3. @Override
  4. protected boolean onSuccess(Activity activity, String response) {
  5. // do stuff with response
  6. return false;
  7. }
  8. });
  9. menuTask.execute(getString(R.string.api_url));
  10.  
  11. public class HttpTask extends IgnitedAsyncTask<Activity, String, Void, String> {
  12.  
  13. private static final String LOG_TAG = "HttpTask";
  14.  
  15. private IgnitedHttp http;
  16.  
  17. private static int runningTasks = 0;
  18. private static ProgressDialog loader;
  19.  
  20. public HttpTask(Activity context, IgnitedHttp http) {
  21. this.connect(context);
  22. this.http = http;
  23. }
  24.  
  25. private synchronized void startTask() {
  26. runningTasks++;
  27. }
  28.  
  29. private synchronized void endTask() {
  30. runningTasks--;
  31. }
  32.  
  33. private synchronized void showLoader(Activity context) {
  34. loader = ProgressDialog.show(context, context.getString(R.string.please_wait), context.getString(R.string.loading_data), true, false);
  35. }
  36.  
  37. private synchronized void hideLoader() {
  38. loader.dismiss();
  39. }
  40.  
  41. @Override
  42. public boolean onTaskStarted(Activity context) {
  43. if(runningTasks == 0) {
  44. showLoader(context);
  45. }
  46. startTask();
  47. return true;
  48. }
  49.  
  50. @Override
  51. public boolean onTaskSuccess(Activity context, String response) {
  52. endTask();
  53. if(runningTasks == 0) {
  54. hideLoader();
  55. }
  56. disconnect();
  57. return false;
  58. }
  59.  
  60. @Override
  61. public String run(String... urls) throws ConnectException, IOException {
  62. Log.d(LOG_TAG, String.format("Loading: %s", urls[0]));
  63. IgnitedHttpResponse resp = http.get(urls[0], true).retries(3).expecting(200).send();
  64.  
  65. return resp.getResponseBodyAsString();
  66. }
  67.  
  68. @Override
  69. public boolean onTaskFailed(Activity context, Exception error) {
  70. endTask();
  71.  
  72. if(runningTasks == 0) {
  73. hideLoader();
  74. }
  75.  
  76. // should show error here
  77.  
  78. super.onTaskFailed(context, error); // prints a stack trace
  79. return true;
  80. }
  81.  
  82. }
  83.  
  84.  
  85. public abstract class HttpTaskHandler implements IgnitedAsyncTaskHandler<Activity, Void, String> {
  86.  
  87. private Activity activity;
  88.  
  89. public HttpTaskHandler(Activity activity) {
  90. this.activity = activity;
  91. }
  92.  
  93. protected abstract boolean onSuccess(Activity activity, String response);
  94.  
  95. @Override
  96. public Activity getContext() {
  97. return activity;
  98. }
  99.  
  100. @Override
  101. public boolean onTaskCompleted(Activity arg0, String arg1) {
  102. return false;
  103. }
  104.  
  105. @Override
  106. public boolean onTaskFailed(Activity arg0, Exception arg1) {
  107. return false;
  108. }
  109.  
  110. @Override
  111. public boolean onTaskProgress(Activity arg0, Void... arg1) {
  112. return false;
  113. }
  114.  
  115. @Override
  116. public boolean onTaskStarted(Activity activity) {
  117. return false;
  118. }
  119.  
  120. @Override
  121. public boolean onTaskSuccess(Activity activity, String response) {
  122. return onSuccess(activity, response);
  123. }
  124.  
  125. @Override
  126. public void setContext(Activity activity) {
  127. this.activity = activity;
  128. }
  129.  
  130. }
Add Comment
Please, Sign In to add comment