java - 我应该在 API 中集成后台任务吗?

标签 java android multithreading api-design

我正在创建一个 API,它应该在线程中运行。现在我真的不知道我是否应该在我的 API 中集成/提供后台任务。让它成为线程安全不是问题。

在 Android 中执行线程有很多可能性(IntentServices、 native 线程解决方案、AsyncTask 等)。现在我觉得如果我集成一个后台任务,比方说一个 AsyncTask,使用 API 的开发人员将非常有限地使用它。因为考虑到 f.e.方向发生变化,开发人员应该能够对其做出适当的 react 。而且应该由他来选择如何线程,这样他就可以坚持他的设计。

我应该如何处理以提供最佳的可操作性?提供可以使用或忽略的任务?只是让 API 线程安全,让开发人员在他选择的后台任务中实现 API?

我问的另一个原因是 Android/Java 中的大多数 API 不提供后台任务,而是线程安全的。

是否有关于此的一般规则?

最佳答案

在我看来,除了重负载操作(如网络或文件读取)外,所有 API 操作都必须同步,这些操作应提供需要回调的异步方法。您还必须提供需要为 API 异步回调实现的接口(interface)。

如果 API 由等待和轮询用户输入的总线或服务器样式方法组成,则 API 本身必须在主线程上运行。它可能应该构建为服务或异步任务。不要忘记在处理程序中保留对主线程的引用以便能够更新 IU。

即使它不是那种类型,我也会在后台线程中构建它并在内部使用 Handler 进行调用。

关于java - 我应该在 API 中集成后台任务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19163366/

相关文章:

java - 等于重写 String 和 Int

android - 如何在 Facebook 中添加我的 Android 应用程序

Android 启动服务永远不会启动

java - 我必须手动停止 Java 中的线程吗?

java - Spring Boot + 多线程 + 处理连接池

java - 是否可以使用 jpa @Query 调用 Oracle 函数

java - if(a&&b) 是否应该比 if(a) if(b) 花费更多时间?

java - 我们可以更改移动设备的 GPS 值吗?

android - 将粘性标题添加到视差滚动 - android

multithreading - EnumWindows 和 EnumChildWindows 使我的 Treeview 保持更新