我知道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?
答案 0 :(得分:0)
正如您所解释的那样,onHandleIntent是在工作线程上调用的,并带有要处理的请求。一次只处理一个Intent,但处理发生在独立于其他应用程序逻辑运行的工作线程上。
为什么要创建一个单独的线程,除非你想处理多个请求并同时处理它们?
因此,如果您处理onHandleIntent中建议的操作,它将阻止对同一个IntentService的其他请求,但它不会阻止任何其他操作。
这个答案可能会对您有所帮助 - start async task from onhandleintent