59 lines
1.6 KiB
Java
Raw Normal View History

2017-02-12 19:49:46 +08:00
package com.topjohnwu.magisk.asyncs;
import android.app.Activity;
import android.content.Context;
2017-02-12 19:49:46 +08:00
import android.os.AsyncTask;
import com.topjohnwu.magisk.MagiskManager;
import com.topjohnwu.magisk.utils.Shell;
2017-02-12 19:49:46 +08:00
import com.topjohnwu.magisk.utils.Utils;
import java.lang.ref.WeakReference;
2017-02-12 19:49:46 +08:00
public abstract class ParallelTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> {
private WeakReference<Activity> weakActivity;
private WeakReference<MagiskManager> weakMagiskManager;
2017-02-12 19:49:46 +08:00
private Runnable callback = null;
2017-02-12 19:49:46 +08:00
public ParallelTask() {}
public ParallelTask(Context context) {
weakMagiskManager = new WeakReference<>(Utils.getMagiskManager(context));
}
2017-02-12 19:49:46 +08:00
public ParallelTask(Activity context) {
this((Context) context);
weakActivity = new WeakReference<>(context);
}
protected Activity getActivity() {
return weakActivity.get();
}
protected MagiskManager getMagiskManager() {
return weakMagiskManager.get();
}
protected Shell getShell() {
MagiskManager magiskManager = getMagiskManager();
return magiskManager == null ? null : getMagiskManager().shell;
2017-02-12 19:49:46 +08:00
}
@SuppressWarnings("unchecked")
public void exec(Params... params) {
2017-02-12 19:49:46 +08:00
executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
}
@Override
protected void onPostExecute(Result result) {
if (callback != null) callback.run();
}
public ParallelTask<Params, Progress, Result> setCallBack(Runnable next) {
callback = next;
return this;
}
2017-02-12 19:49:46 +08:00
}