0

我有一个后台操作,我希望能够以两种模式运行:

  • UI模式,由用户发起,在整个生命周期内为用户提供操作状态的精准反馈。

  • 非 UI 模式,由其启动AlarmManager并向用户提供在其生命周期结束时的操作摘要。

只实现UI 模式的自然设计选择是AsyncTask,只实现非 UI 模式的自然设计选择是IntentService.

同时实现两种模式的自然设计选择是什么?即,将这两种模式合并到一个对象中的自然设计选择是什么?

4

2 回答 2

1

我不会让一个对象通过不同的方式(UI/非UI)做同样的事情,而是将业务逻辑移动到一个单独的类中,然后在你需要的时候激活两个不同的对象(AsyncTaskIntentService),并使用它内的对象。另外,您打算在您的AsyncTask.

于 2014-08-14T00:06:10.647 回答
0

目前,我倾向于以下解决方案。MyAsyncTask不带 UI 和带 UI定义MyUIAsyncTask extends MyAsyncTask;这样就实现了 UI 模式。定义MyService哪个有一个实例MyAsyncTask(参见 [ Is it possible to use AsyncTask in a Service class?);实现非UI模式。我不相信这是最好的解决方案,而且它违反了以下线程规则

  • 该类AsyncTask必须在UI 线程上加载。
  • 任务实例必须在UI 线程上创建。
  • execute(Params...)必须在UI 线程上调用。
于 2014-08-07T01:45:18.997 回答