我有一个简单的Android应用程序,它使用类的实例,让我们称之为DataManager,以类似Façade的方式管理对域类的访问.我最初设计它是一个单独的,可以使用静态方法检索,但我最终对我的实现的混乱感到恼火,并重构为我认为是一个更简单和更清洁的想法.
现在的想法是,对于打开的每个文件,创建一个DataManager,它们处理文件I / O和域类的修改(例如Book).当开始一个新的Activity时,我将这个实例作为Serializable额外传递(我还没有使用Parcelable,但是当我有基本概念工作时,我希望我会这样做),然后我从Intent中获取DataManager新Activity的onCreate()方法.
然而,对象的比较表明,从一个活动发送的对象与在第二个活动中从Bundle检索的对象不同(不同的引用).阅读Bundle(在StackOverflow等上)表明Bundles除了传值之外不能做任何其他事情.
那么什么可能是在活动之间传递对象最干净,最安全的策略?我能看到它
>忘记通过引用传递并使用具有自己的DataManager对象的每个Activity.每次关闭活动时都会传回新的DataManager,以便底层活动可以使用它. (我认为这是一个简单的解决方案.)
>返回使用单例DataManager并使用静态方法从每个Activity获取它. (不再热衷于使用单身人士.)
>扩展应用程序以创建一种对DataManager的全局引用. (再次,不热衷于全局变量的想法.)
这是一个公平的总结吗?我可以使用其他一些健康的策略吗?
最佳答案
另一种方法是创建服务.第一个活动将启动服务并绑定到它,当您启动新意图时,取消绑定第一个活动,当第二个活动启动时,绑定到该服务.
原文链接:https://www.f2er.com/android/430467.html这样您就不必停止服务或担心在活动之间传递数据.