java – 通过引用从一个Activity传递到下一个Activity是否可能,以及最佳策略是什么?

我有一个简单的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的全局引用. (再次,不热衷于全局变量的想法.)

这是一个公平的总结吗?我可以使用其他一些健康的策略吗?

最佳答案
另一种方法是创建服务.第一个活动将启动服务并绑定到它,当您启动新意图时,取消绑定第一个活动,当第二个活动启动时,绑定到该服务.

这样您就不必停止服务或担心在活动之间传递数据.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...