Java Android异步任务不';在服务中使用时不起作用?

Java Android异步任务不';在服务中使用时不起作用?,java,android,android-asynctask,android-service,Java,Android,Android Asynctask,Android Service,我正在设置一个后台任务来进行网络呼叫;然而,我的开发已经停滞,因为我无法让我设置的异步任务工作,我所做的是在代码中的不同点上敬酒,以查看问题发生的位置。我意识到我会在所有点上得到一个祝酒词,直到AsyncTask的预执行方法;然而,在doInBackground和postexecute中,我将一无所获 为什么会这样?如果不能做到这一点,我们的工作是什么 package com.testapp2.second.activities; import java.util.Date; import

我正在设置一个后台任务来进行网络呼叫;然而,我的开发已经停滞,因为我无法让我设置的异步任务工作,我所做的是在代码中的不同点上敬酒,以查看问题发生的位置。我意识到我会在所有点上得到一个祝酒词,直到AsyncTask的预执行方法;然而,在
doInBackground
postexecute
中,我将一无所获

为什么会这样?如果不能做到这一点,我们的工作是什么

package com.testapp2.second.activities;

import java.util.Date;

import com.testapp2.second.OTweetApplication;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.User;
import android.app.NotificationManager;
import android.app.Service;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.IBinder;
import android.widget.Toast;

public class StatsCheckerService extends Service {
    private OTweetApplication app;
    private Twitter twitter;
    User user;

    @Override
    public IBinder onBind(Intent arg0) {
       return null;
    }

    @Override
    public void onCreate() {
       super.onCreate();
       app = (OTweetApplication) getApplication();
       twitter = app.getTwitter();

       Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();

    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        if (app.isAuthorized()) {

            Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG)
                .show();
            new toastTwitterInBg();
        }
        return START_STICKY;

    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
    }

    private class toastTwitterInBg extends AsyncTask<Void, Void, User> {

        @Override
        protected User doInBackground(Void... arg0) {
            try {
                user = twitter.verifyCredentials();
                Toast.makeText(StatsCheckerService.this, "async tasks do in background", Toast.LENGTH_LONG).show();
            } catch (TwitterException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return user;
        }

        @Override
        protected void onPostExecute(User result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            Toast.makeText(StatsCheckerService.this, "async tasks on post execute finished", Toast.LENGTH_LONG).show();
        }

    }
} 
package com.testapp2.second.activities;
导入java.util.Date;
导入com.testapp2.second.OTweetApplication;
导入twitter4j.Twitter;
导入twitter4j.TwitterException;
导入twitter4j.User;
导入android.app.NotificationManager;
导入android.app.Service;
导入android.content.Intent;
导入android.os.AsyncTask;
导入android.os.IBinder;
导入android.widget.Toast;
公共类StatsCheckerService扩展了服务{
私人应用程序;
私人推特;
用户;
@凌驾
公共IBinder onBind(意图arg0){
返回null;
}
@凌驾
public void onCreate(){
super.onCreate();
app=(OTweetApplication)getApplication();
twitter=app.getTwitter();
Toast.makeText(这是“我的服务已创建”,Toast.LENGTH_LONG.show();
}
@凌驾
公共int onStartCommand(Intent Intent、int标志、int startId){
如果(app.isAuthorized()){
Toast.makeText(这是“我的服务已启动”,Toast.LENGTH\u LONG)
.show();
新toastTwitterInBg();
}
返回开始时间;
}
@凌驾
公共空间{
super.ondestory();
Toast.makeText(这是“我的服务已停止”,Toast.LENGTH_LONG.show();
}
私有类toastTwitterInBg扩展异步任务{
@凌驾
受保护的用户doInBackground(无效…arg0){
试一试{
user=twitter.verifyCredentials();
Toast.makeText(StatsCheckerService.this,“异步任务在后台执行”,Toast.LENGTH\u LONG.show();
}捕获(twitter异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回用户;
}
@凌驾
受保护的void onPostExecute(用户结果){
//TODO自动生成的方法存根
super.onPostExecute(结果);
Toast.makeText(StatsCheckerService.this,“执行后异步任务已完成”,Toast.LENGTH\u LONG.show();
}
}
} 

只能从UI线程抛出祝酒词
doInBackground
在非UI线程上运行,因此投掷祝酒词不会产生任何影响


onPostExecute
中没有得到任何东西是很奇怪的

正如其他人已经指出的,祝酒在
doInBackground
中不起作用,因为它是在单独的线程上运行的。另外,您是否实际执行了
异步任务

这不应该是:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
  // ....
  new toastTwitterInBg().execute();
  // ....
}
注意
.execute()