我有一个在AIR中使用Worker对象的应用程序。现在,我需要通过它关闭我的申请,但我不知道怎么做.
以下是我尝试过的:
NativeApplication.nativeApplication.exit();退出工作人员,而不是应用程序System.exit(0);不能在空气中工作,只有FP调试器fscommand('quit');在空气中不起作用,只有FPNativeApplication.nativeApplication.openedWindows[i].close(); in for,openedWindows.length返回'0‘WorkerDomain.current.listWorkers[i].terminate(); in,如果'isPrimordial‘是真的,并且当前工作人员是后台工作人员,则isPrimordial()不工作。如何通过后台工作人员退出应用程序?
示例代码:
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();
}
}
}
}发布于 2018-08-14 16:44:44
虽然我以前还没有这样做过,但也许这是实现这一点的一个好方法:
创建工作人员时,侦听TERMIANTED状态更改事件,该事件将在终止工作人员时分派(我不确定执行nativeapplication.exit是否触发此事件,或者是否必须显式调用terminate()方法):
_worker = WorkerDomain.current.createWorker(this.loaderInfo.bytes, true);
_worker.addEventListener(WorkerState.TERMINATED, workerFinished, false, 0, true);
_worker.start();然后,在该处理程序中,退出应用程序:
private function workerFinished(e:Event):void {
NativeApplication.nativeApplication.exit();
}https://stackoverflow.com/questions/51842468
复制相似问题