什么是推荐的方法来通知托管活动执行某些后台处理的片段,完成它。假设片段正在运行一些在主循环器外执行工作的线程。
从那以后就不会做一个简单的回调:
为什么我认为是错的?因为我有一些非常丑陋的方法来检查片段是否附加,以及是否完成了工作以便调用回调。当在片段中执行某些工作并且活动被分离时引发异常时,这变得非常愚蠢。如果Android的决定调用onSaveInstance在同一时刻我将不得不把异常到捆绑,后来它传递的时间活动和碎片从保存的状态重新。此外,我可以运行到其中活动将接收到相同的回调两次的情况下(从检查所述片段,并且当片段被附接在第二次一次;这可能发生在应用程序得到保存和恢复)
这会产生如此多的代码,如果活动不会脱离,那么在我看来,这些代码可能会更清晰。这就是为什么我希望我做错了什么,并希望有人能为我提供更好的解决方案。
答案 0 :(得分:2)
我会说您应该使用服务进行后台处理,但如果您因特定原因选择了片段,则可以坚持使用。您应该通过BroadcastReceiver从可能具有与活动不同的生命周期的片段或服务通知活动的方式。使用此方法,活动可以在其自己的生命周期回调期间register和unregister一个BroadcastReceiver。从您只是send the broadcast的片段或服务中忘记它。如果一个活动正在收听广播,它将收到它,如果不是什么都不会发生。