您好,感谢您的帮助:
我想将 Java 系统移植到 Android,并且我想通过透明的独立服务将其提供给 3rd 方应用程序,因此它类似于系统库。该系统是一个 VoiceXML 解释器,它将解释由 3rd 方应用程序处理的文档并将结果发回给它。解释这些文件可能需要任意时间,甚至是很长的时间。
现在,我有一项服务可以创建完成所有工作的解释器。我在一个名为 startJVoiceXML() 的方法中执行此操作。
问题是我的服务在服务创建后大约 20 到 30 秒被 Android 杀死并出现 ANR。但是,如果我不在该方法上做任何繁重的工作(只是之前的代码),则服务将继续运行,并且不会在更长的时间内被杀死。
我需要创建一个线程来做我需要做的事情吗?我在代码中添加了一些注释以供进一步解释。
谢谢!
public synchronized void startJVoiceXML(final URI uri) throws JVoiceXMLEvent, InterruptedException
{
AndroidConfiguration config = new AndroidConfiguration();
jvxml = new JVoiceXmlMain(config);
jvxml.addListener(this);
jvxml.start();
int a=0;
//the wait is not the problem, the jvxml object run method calls jvxmlStarted in the service that does a .notifyAll() on this thread
this.wait();
//this while is just to "do" some long running operation in order to emulate the Interpreter behaviour
while(a<1000)
{
Thread.sleep(500);
Log.e("JVoiceXML","esto en el while");
a=a+1;
}
}
public synchronized void jvxmlStarted() {
this.notifyAll();
}