我在AIR中制作了一个使用Worker对象的应用程序。现在,我需要通过它关闭我的应用程序,但是我不知道该怎么做...
这是我尝试过的:
NativeApplication.nativeApplication.exit();
退出工作程序,而不是应用程序System.exit(0);
在AIR中不起作用,只有FP调试器fscommand('quit');
在AIR中不起作用,仅在FP中起作用NativeApplication.nativeApplication.openedWindows[i].close();
中,openedWindows.length返回“ 0” WorkerDomain.current.listWorkers[i].terminate();
for,terminate()不起作用。如何通过后台工作程序退出我的应用程序?
示例代码:
package {
import flash.desktop.NativeApplication;
import flash.system.fscommand;
import flash.system.System;
import flash.system.Worker;
import flash.system.WorkerDomain;
public class Main extends Sprite {
private var _worker:Worker;
public function Main() {
if(Worker.current.isPrimordial) {
_worker = WorkerDomain.current.createWorker(this.loaderInfo.bytes, true);
_worker.start();
trace("create worker");
}
else {
trace("Worker started, lets close app!");
//NativeApplication.nativeApplication.exit();
//System.exit(0);
//fscommand("quit");
//NativeApplication.nativeApplication.openedWindows.length;
//WorkerDomain.current.listWorkers[0].terminate();
}
}
}
}
答案 0 :(得分:1)
尽管我以前没有做过,但是也许这是实现此目的的好方法:
创建工作程序时,请监听TERMIANTED状态更改事件,该事件将在终止工作程序时分派(我不确定执行nativeapplication.exit是否会触发此事件,或者是否必须显式调用{ {1}}方法):
terminate()
然后,在该处理程序中,退出应用程序:
_worker = WorkerDomain.current.createWorker(this.loaderInfo.bytes, true);
_worker.addEventListener(WorkerState.TERMINATED, workerFinished, false, 0, true);
_worker.start();