生成一个子线程任务
public class GetDeviceIdTask extends Task {
private String mDeviceId;
@Override
public void run() {
// 真正自己的代码
TelephonyManager tManager = (TelephonyManager) mContext.getSystemService(
Context.TELEPHONY_SERVICE);
mDeviceId = tManager.getDeviceId();
PerformanceApp app = (PerformanceApp) mContext;
app.setDeviceId(mDeviceId);
}
}
生成一个主线程任务
public class DelayInitTaskA extends MainTask {
@Override
public void run() {
// 模拟一些操作
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
LogUtils.i("DelayInitTaskA finished");
}
}
B任务依赖A任务 ,B任务需要等待A任务先完成
/**
* 需要在getDeviceId之后执行
*/
public class InitJPushTask extends Task {
//InitJPushTask 任务依赖GetDeviceIdTask任务
// InitJPushTask 会在GetDeviceIdTask 完成后执行
@Override
public List<Class<? extends Task>> dependsOn() {
List<Class<? extends Task>> task = new ArrayList<>();
task.add(GetDeviceIdTask.class);
return task;
}
@Override
public void run() {
JPushInterface.init(mContext);
PerformanceApp app = (PerformanceApp) mContext;
JPushInterface.setAlias(mContext, 0, app.getDeviceId());
}
}
等待任务
/**
* 主线程执行的task
*/
public class InitWeexTask extends MainTask {
//InitWeexTask 需要等待 ,InitWeexTask 任务没完成不能向下执行
@Override
public boolean needWait() {
return true;
}
@Override
public void run() {
InitConfig config = new InitConfig.Builder().build();
WXSDKEngine.initialize((Application) mContext, config);
}
}