Java 当服务在后台工作时,从未调用AsyncTask的doInBackground 私有类测试扩展了异步任务{ @凌驾 受保护的void onPreExecute(){ //TODO自动生成的方法存根 super.onPreExecute(); 日志d(“测试”、“调用1”); } @凌驾 受保护的Void doInBackground(Void…参数){ 日志d(“测试”、“调用2”); 返回null; } @凌驾 受保护的void onPostExecute(void结果){ //TODO自动生成的方法存根 super.onPostExecute(结果); 日志d(“测试”,“调用3”); } }
和输出: 测试:调用1 为什么服务在后台工作时从不调用其他方法?如果服务停止,则所有方法调用和输出: 测试:调用1 测试:呼叫2Java 当服务在后台工作时,从未调用AsyncTask的doInBackground 私有类测试扩展了异步任务{ @凌驾 受保护的void onPreExecute(){ //TODO自动生成的方法存根 super.onPreExecute(); 日志d(“测试”、“调用1”); } @凌驾 受保护的Void doInBackground(Void…参数){ 日志d(“测试”、“调用2”); 返回null; } @凌驾 受保护的void onPostExecute(void结果){ //TODO自动生成的方法存根 super.onPostExecute(结果); 日志d(“测试”,“调用3”); } },java,android,android-asynctask,android-service,Java,Android,Android Asynctask,Android Service,和输出: 测试:调用1 为什么服务在后台工作时从不调用其他方法?如果服务停止,则所有方法调用和输出: 测试:调用1 测试:呼叫2 test:called3我猜您正在android 3.x或更高版本上进行测试,您只是受到对AsyncTask执行方式的更改的影响 这就是我在代码中处理此问题的方式,以便始终以完全并行的方式工作: private class Test extends AsyncTask<Void, Void, Void> { @Override
test:called3我猜您正在android 3.x或更高版本上进行测试,您只是受到对AsyncTask执行方式的更改的影响 这就是我在代码中处理此问题的方式,以便始终以完全并行的方式工作:
private class Test extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
Log.d("test", "called1");
}
@Override
protected Void doInBackground(Void... params) {
Log.d("test", "called2");
return null;
}
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
Log.d("test", "called3");
}
}
基本上,AsyncTask的变化出现在蜂巢中(参见“执行顺序”一节中的Android SDK文档),因此在此之前,您可以像往常一样启动它,对于HC和更高版本,如果您不喜欢新的行为,请使用
executeOnExecutor()
(我认为没有人喜欢)我猜您正在android 3.x或更高版本上进行测试,您只是受到对AsyncTask执行方式的更改的影响
这就是我在代码中处理此问题的方式,以便始终以完全并行的方式工作:
private class Test extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
Log.d("test", "called1");
}
@Override
protected Void doInBackground(Void... params) {
Log.d("test", "called2");
return null;
}
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
Log.d("test", "called3");
}
}
AsyncTask的基本变化出现在蜂巢中(请参阅“执行顺序”一节中的Android SDK文档),因此在此之前,您可以像往常一样启动它,对于HC和更高版本,如果您不喜欢新的行为,请使用
executeOnExecutor()
(我想没有人会这样做)您从哪里开始这个异步任务?您如何启动服务?Asynctask启动于按钮单击,服务启动WNN活动创建。您在哪里启动此Asynctask?您是如何启动服务的?Asynctask启动按钮单击,服务启动WNN活动创建。然后这将是您问题的解决方案。只要修改你的代码,如我的例子所示,那么这将是你的问题的解决方案。只需修改代码,如我的示例所示