新增 阻塞操作加上ui线程判断,在ui线程执行时会抛出异常:

waitForPackage, waitForActivity,
http模块的方法没有加callback参数时
findOne(), untilFind()等
sleep()
This commit is contained in:
hyb1996
2018-11-01 18:18:59 +08:00
parent c803bb6efc
commit d3c073fa9d
5 changed files with 28 additions and 10 deletions

View File

@@ -9,7 +9,12 @@ module.exports = function(runtime, global){
global.log(text);
}
global.sleep = runtime.sleep.bind(runtime);
global.sleep = function(t) {
if(ui.isUiThread()){
throw new Error("不能在ui线程执行阻塞操作请使用setTimeout代替");
}
runtime.sleep(t);
}
global.isStopped = function(){
return runtime.isStopped();
@@ -25,7 +30,6 @@ module.exports = function(runtime, global){
global.exit = runtime.exit.bind(runtime);
global.stop = global.exit;
global.setClip = function(text){
@@ -47,6 +51,7 @@ module.exports = function(runtime, global){
}
global.waitForActivity = function(activity, period){
ensureNonUiThread();
period = period || 200;
while(global.currentActivity() != activity){
sleep(period);
@@ -54,12 +59,19 @@ module.exports = function(runtime, global){
}
global.waitForPackage = function(packageName, period){
ensureNonUiThread();
period = period || 200;
while(global.currentPackage() != packageName){
sleep(period);
}
}
function ensureNonUiThread() {
if(ui.isUiThread()){
throw new Error("不能在ui线程执行阻塞操作请在子线程或子脚本执行或者使用setInterval循环检测当前activity和package");
}
}
global.random = function(min, max){
if(arguments.length == 0){
return Math.random();

View File

@@ -40,6 +40,9 @@ module.exports = function(runtime, scope){
}
http.request = function(url, options, callback){
if(!callback && ui.isUiThread()){
throw new Error("不能在ui线程执行网络操作请加上回调函数的参数callback或在子线程执行");
}
var call = http.client().newCall(http.buildRequest(url, options));
if(!callback){
return wrapResponse(call.execute());