作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个我创建的对象。我们称它为 MyObject
。
我希望能够将 MyObject
保存到数据库的相应表中。我不希望这发生在 Activity
的主线程上。很容易。我创建了一个 AsyncTask
来执行此操作。
但是,我的应用程序还有一个 IntentService
用于在设备数据库和我的云数据库之间同步数据。我也想将从云端同步下来的 MyObject
保存到设备的数据库中。但是,我不希望这在 IntentService
中异步发生。我希望它发生在 IntentService
的主线程上。
显然,目的是模块化此代码,因此不需要重复。
如何模块化我的保存代码,以便它可以异步和同步调用?
我想我会在 MyObject
中创建一个 saveMe()
方法并将其声明为 static
。在 IntentService
中,我只需调用 saveMe()
。在 Activity
中,我将启动一个 AsyncTask
,它传入 MyObject
,然后调用 saveMe()
。听起来对吗?
最佳答案
除了 static
这对我来说听起来不错,你不想访问实例变量吗?
我不知道您的应用程序一般是如何设计的,但我可能会选择以下模式之一:
Runnable
的子类(或 Callable
如果您需要返回值和/或异常)处理一般保存,具有合适的工厂或构造函数。然后,您可以直接或在后台线程上运行这些任务。MyObject
实例,假设它们有一个共同的父类,您可以在其中放置该代码,并且这些方法由同步或异步代码使用。恕我直言,确切的模式取决于您正在处理的应用程序。
关于android - 有没有一种方法可以将代码模块化,使其能够异步运行并在主线程上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17975831/
我是一名优秀的程序员,十分优秀!