IntentService自己的Thread

时间:2015-05-25 08:28:13

标签: java android multithreading android-intentservice

我知道IntentService本身在不同的线程上运行。

此外,它执行onHandleIntent()并在该方法完成时停止。

我的问题是:在意图服务中创建我自己的自定义线程有什么后果吗?

我知道它可以在服务中完成,但我想知道这是否是使用IntentService的错误方法

有关更多信息,我需要做的是发送大量HTTP请求。

我要做的是将数据库保存在请求字符串中,并运行执行它们的意向服务。 这就是我使用IntentService的原因,请求可能需要一些时间,我希望一旦包含请求的表为空,服务就会关闭。

我想我可以通过添加自己的线程来提高此服务的速度,因为我将运行,比如每次5个线程。

编辑: 这是我想要做的代码,我想它会清楚我试图做什么以及它是否可能。

 protected void onHandleIntent(Intent intent) {
    helper = new DBHelper(getApplicationContext());
    File file;
    //checks if the DB requests exists
    while(helper.requestsExists()){
        ArrayList<String> requestArr = helper.getRequestsToExcute(5);
        if(!requestArr.isEmpty()){
            //execute them and delete the DB entry
            for(int i=0;i<requestArr.size();i++){
                file = new File(requestArr.get(i));
                new MyThread(file).start();// the DB entry is delete withing the thread
            }
        }
    }
}

所以这个服务只要在我的SQLite数据库上获得任何数据库条目就会运行,在它完成执行所有数据后它将停止。 没关系,还是我应该使用Service?

1 个答案:

答案 0 :(得分:0)

正如您所解释的那样,onHandleIntent是在工作线程上调用的,并带有要处理的请求。一次只处理一个Intent,但处理发生在独立于其他应用程序逻辑运行的工作线程上。

为什么要创建一个单独的线程,除非你想处理多个请求并同时处理它们?

因此,如果您处理onHandleIntent中建议的操作,它将阻止对同一个IntentService的其他请求,但它不会阻止任何其他操作。

这个答案可能会对您有所帮助 - start async task from onhandleintent