android - Custom AsyncTask with callback -


i need write asynctask reference on new object instances after screen rotation. wrote callback interface , in juketask declared weak reference field.
juketask:

public abstract class juketask<params, progress, result>         extends asynctask<params, progress, result> {     private weakreference<callback<progress, result>> mwrcallback;      public void setcallback(callback<progress, result> callback) {         mwrcallback = new weakreference<>(callback);     }      @override     protected void onpreexecute() {         callback<progress, result> callback = mwrcallback.get();          if(callback != null) {             callback.onpreexecute();         }     }      @suppresswarnings("unchecked")     @override     protected void onprogressupdate(progress... values) {         callback<progress, result> callback = mwrcallback.get();          if(callback != null) {             callback.onprogressupdate(values);         }     }      @override     protected void onpostexecute(result result) {         callback<progress, result> callback = mwrcallback.get();          if(callback != null) {             callback.onpostexecute(result);         }     }      public interface callback<p, r> {         void onpreexecute();         @suppresswarnings("unchecked")         void onprogressupdate(p... values);         void onpostexecute(r result);     } } 

example of using:

    public class testactivity extends appcompatactivity implements juketask.callback<integer, integer> {     private static final string tag = testactivity.class.getsimplename();     private textview mtextview;     juketask<void, integer, integer> mtask;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         mtextview = new textview(this);         setcontentview(mtextview);         mtextview.settext("started");         //...          if(mtask == null) {             mtextview.settext("task null!");             mtask = new juketask<void, integer, integer>() {                 @override                 protected integer doinbackground(void[] params) {                     int = 0;                     (; < 100000; ++i) {                         log.d(tag, "tick " + i);                     }                     //do smth                     return i;                 }             };             mtask.setcallback(this);             mtask.execute();         }     }      @override     public void onpreexecute() {      }      @override     public void onprogressupdate(integer... values) {      }      @override     public void onpostexecute(integer result) {         mtextview.settext(result.tostring());     } } 


should use weakreference in juketask callback not block garbage collector?
how save reference juketask? because after screen rotation re-executes juketask.


Comments