在服务类中使用AsyncTask?

Rak*_*esh 5 java android android-service android-asynctask

我必须将数据上传到服务器.我正在使用与我的应用程序在同一进程上运行的服务.我应该使用单独的线程进行上传过程还是应该使用AsyncTask将数据上传到服务器?

更具体地说,我可以在服务类中使用AsyncTask吗?我应该使用它吗?此服务应始终在内存中运行,以便每5秒向服务器发送一次数据.

Pie*_*ust 5

在服务中使用AsyncTask没问题.

NOTE/FIX:当我说服务在后台运行时,我错了,它只适用于IntentService.正如评论和文档中所述,服务不会创建自己的线程:

警告:服务在其托管进程的主线程中运行 - 该服务不会创建自己的线程,也不会在单独的进程中运行(除非您另行指定).这意味着,如果您的服务要进行任何CPU密集型工作或阻止操作(例如MP3播放或网络),您应该在服务中创建一个新线程来完成这项工作.

这意味着您必须使用AsyncTask(或任何情况下的其他线程)来执行上载任务.


use*_*666 2

是的,可以,下面的代码将每 5 秒运行一次。使用常规连接代码发送部分。

public class AsyncTaskInServiceService extends Service {

    public AsyncTaskInServiceService() {
        super("AsyncTaskInServiceService ");
    }

    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        final Timer t = new Timer();
        t.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                //Connect to database here
                try {
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }, 0, 5000);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • `Service` 中**没有** `onHandleIntent()`。它应该是“IntentService”。 (3认同)