Java 当服务在后台工作时,从未调用AsyncTask的doInBackground 私有类测试扩展了异步任务{ @凌驾 受保护的void onPreExecute(){ //TODO自动生成的方法存根 super.onPreExecute(); 日志d(“测试”、“调用1”); } @凌驾 受保护的Void doInBackground(Void…参数){ 日志d(“测试”、“调用2”); 返回null; } @凌驾 受保护的void onPostExecute(void结果){ //TODO自动生成的方法存根 super.onPostExecute(结果); 日志d(“测试”,“调用3”); } }

Java 当服务在后台工作时,从未调用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

和输出:

测试:调用1

为什么服务在后台工作时从不调用其他方法?如果服务停止,则所有方法调用和输出:

测试:调用1

测试:呼叫2


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活动创建。然后这将是您问题的解决方案。只要修改你的代码,如我的例子所示,那么这将是你的问题的解决方案。只需修改代码,如我的示例所示