我的工作流程如下图所示。
Home
活动NewEntry
活动NewEntry
活动Home
活动在我导航回Home
活动时,我使用NewEntry
功能将新的参赛详情从Home
活动传递到setResult(RESULT_OK, intent);
个活动。
我也可以接收数据,但新保存数据的数据库ID
除外。我使用另一个线程中的AsyncTask.execute()
将新条目数据保存到数据库。只有在数据库中保存了条目后,我才会在回调函数中获得该条目的ID
。
但是,一旦我按下后退按钮并保存条目AsyncTask
就会被调用,它会导航回Home
个活动。由于在ID
执行完成之前没有为新条目设置AsyncTask
,因此我在ID
活动中Home
没有获得接收意图的值。
我希望获取ID
的数据库值,并将其传递给Home
活动以用于其他目的。这样我就不必刷新Home
活动中的整个列表来显示新条目
有没有办法实现这个目标?
答案 0 :(得分:2)
您可以从AsyncTask发送广播或使用GreenRobot或Otto等事件总线。
但更好的解决方案是在主活动中加载一个加载器,因此每当数据库中发生更改时,它都会重新加载数据,因此您无需在onResult中传回数据,然后在晚点。使用加载器和内容提供程序(假设您正在使用SQLite数据库)将免费为您完成所有操作。