引言
在软件开发中,经常会遇到耗时操作,有时候耗时操作会对主逻辑的运行时间有影响,但是耗时的操作又不需要实时反馈,就可以使用异步操作。比如日志的记录,启动程序时,也可以降一下启动时候的耗时操作,进行异步,先把程序启动起来,然后异步操作慢慢执行。
若依用法
常见的就是日志的记录,以登录为例:
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
AsyncManager.me()是一个线程池的单例,execute执行的是一个timetask方法。
项目实战
在某个项目中,可以将某些逻辑进行异步化。比如启动时候异步加载资源与异步执行业务逻辑。
// 案例1:
// 配置人脸检测器的激活if (isFaceActive){// 初始化人脸检测器FaceEngineUtil faceEngineUtil = FaceEngineUtil.getInstance();faceEngineUtil.activate(appId,sdkKey,activeKey,enginLibPath);faceEngineUtil.initFaceEngine(enginLibPath);FaceEngine faceEngine = faceEngineUtil.getFaceEngine();AsyncManager.me().execute(new TimerTask() {@Overridepublic void run() {//批量注册人脸库中的人脸faceEngineUtil.registerFaceImgPath(faceEngine,faceRepo);}});}
// 案例2:// 转化为jsonobject对象JSONObject attendanceUploadJO = (JSONObject) JSON.toJSON(attendanceUpload);// 获得当前对象EventApiServiceImpl eventApiService = this;AsyncManager.me().execute(new TimerTask() {@Overridepublic void run() {// 调用考勤 接口eventApiService.uploadAttendanceInfo(attendanceUploadJO);}});
总结,不用非得到若依的framework组件中去写代码,直接在程序中进行异步即可。