Android如何停止指定的IntentService?

3

我使用 IntentService 开发了一款 Android 应用程序。

这个 IntentService 和文件上传没什么区别。

我想要实现上传多个“文件上传线程”的功能。

问题在于如何停止指定的“文件上传线程”。

例如:

  1. 用户从设备中选择十个文件并上传它们。
  2. 创建通知以向用户提供“传输反馈”。
  3. 当线程在工作时,用户可以选择其他文件上传。
  4. 创建另一个通知,但在第一个线程完成之前不会启动。

是否可能为用户实现“取消功能”,以取消第一个线程并自动启动第二个线程?!

也许使用 Service 而不是 IntentService 更好吗?

3个回答

0
class MyService extends IntentService {
    public static volatile boolean shouldStop = false;
    public MyService() {
        super("My Service");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        doStuff();
    }

    private void doStuff() {
        // do something 

       // continue doing something

// put those checks wherever you need
       // check the condition
       if (shouldStop) {
           stopSelf();
           return;
       }


   }
}

从您的活动代码中,如果您想停止服务,可以将布尔标志的状态更改为true。希望这能帮到您。


谢谢@Silvans。那么,是否可以通过通知停止一个IntentService? - Calimero
是的,你可以从任何地方停止它,因为我们已经将布尔值设为公共静态,所以你也可以从你的通知代码中访问它。 - Silvans Solanki
完美的Silvans!但我认为整个“IntentService-Que”都被取消了?我只想停止其中一个X线程...也许我误解了你 :( - Calimero

0

IntentServices的设计目的是一次只运行一个。当然,由于它继承自Service,你也可以取消它。


谢谢@Rüdiger。您知道我如何通过通知停止一个IntentService吗? - Calimero
要控制您的IntentService,请使用:http://developer.android.com/reference/android/os/IBinder.html - Rüdiger

0

IntentService旨在仅在处理工作队列中存在的所有请求时停止自身。根据文档,IntentService类“在处理完所有启动请求后停止服务,因此您永远不必调用stopSelf()”

如果您想要取消请求,则可以使用Volley并取消先前的请求https://developer.android.com/training/volley/simple.html#cancel


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接