2012-08-30 42 views
1

我有一个ListView其中每行代表需要上传到服务器的内容。每行包含一个Button,当按下时启动一个intent服务开始上传到服务器。Android意向服务

当我第一次按Button时,意向服务启动,但第二次新的意向服务不启动?应该是 ?这是我的ListViewButtononClickListener中的代码。

Intent intent = new Intent(VaultActivity.this, Upload.class); 
intent.putExtra(FILEPATH, vidoObject.filePath); 
intent.putExtra(POSITION, position); 
ListActivity.this.startService(intent); 

我做错了什么?第二行按钮是不是也创建了一个新的IntentService来开始上传?

回答

3

的IntentService实际上只是一个工作队列:

  • 当第一startService调用时启动服务,创建工作线程,并增加交付的意图工作队列
  • 工作者线程读取来自队列的第一个意图并对其进行处理
  • 如果在处理第一个意图期间,第二个意图传递给服务(通过第二个startService调用)意图被添加到队列中(第三个,第四个等等)
  • t他的工人继续工作,直到工作队列为空,之后该服务被停止

使您的第二排按钮启动另一个服务有可能,但前提是先上传已经完成。

如果您要上传两个文件同时你不能使用IntentService,因为它一次处理一个命令。

+0

谢谢,我真的明白了这一点。第二行在第一次上传完成后开始上传。比你。 – AndroidDev