我正在尝试尽可能干净地实施Android应用。
为此,我已经定义了一个Java库来执行我的逻辑和非Android特定功能。
例如,我的应用程序会对REST apis进行大量网络调用,并生成模型和验证。
该库正在使用Retrofit,它处理异步调用。但是,现在我需要链接调用,这意味着:
我不热衷于(1),因为我们已经拥有这样的代码,而且它一团糟。
如果有一种方法可以获得对传入线程(UI线程)的引用,那么(2)将是我的首选选项,然后在准备好返回模型时能够再次加入它。
这可能吗?
答案 0 :(得分:1)
要在线程上运行任何东西,您需要某种消息循环。 UI线程是Android的一部分,我想如果不访问Android类就无法运行它。
使用系统API轻松获取UI线程。然后你可以发布runnables在该线程上运行。
new Handler(Looper.getMainLooper()).post(new Runnable(){
public void run(){
// your code
}
}
答案 1 :(得分:0)
您可以使用AsyncTask
来完成此操作。顾名思义,AsyncTask
是一个异步类,它同时具有doInBackground
方法,在后台执行类似于Thread
的方法,以及onPostExecute
方法,它在UI上运行,允许您执行任何与UI相关的活动。有关AsyncTask
的更多信息,请访问:http://developer.android.com/reference/android/os/AsyncTask.html