内部/活动间沟通

时间:2016-01-06 19:14:43

标签: java android android-intent android-activity

我主要是Android开发的初学者,我发现自己使用了很多全局变量来在同一活动,活动内部通信中的功能之间共享数据。这主要是因为没有人从活动中调用onCreate(),因此我无法返回可能在活动后面编辑的UI元素和数据。

除了交互活动之外,我发现自己使用Intent extras来处理小数据和外部类,使用静态变量来传递大型数据,图像字符串,当活动死亡时。我读到here应用程序上下文也可用于维护全局变量,因此这可能是一个解决方案,但是这使得活动内部通信的变量即使在它死后也能保持活动,这是不必要的。此外,所有活动可能不需要一些传递的数据。

这似乎是不好的做法,所以我的问题:

  

1)对于交互活动,通常是使用intent extras和static变量来传递数据吗?

     

2)对于活动内部通信,我可以使用什么代替全局变量来在不相互调用但共享某些值的不同函数之间传递数据,并且值会随着活动而消失?这种全局变量的使用是否存在危险?

如果这是过于固执或抽象,我会关闭它。

1 个答案:

答案 0 :(得分:1)

1)意图的使用是可以的。至于全局变量,我不这么认为。在android系统决定释放一些内存后重新创建应用程序时,这些值可能会丢失。为什么不在SharedPreferences或SQLite中保存数据?

2)字段(和类)变量是一种常用的方式(对于不使用findViewById的情况而言,这是非常好的做法)。如果你想在活动之间保持数据,为什么不使用android框架提供的数据(https://developer.android.com/training/basics/activity-lifecycle/recreating.html)?

将所需数据(如项目ID,值等)保存在捆绑包中,然后将其恢复。

public void onSaveInstanceState(Bundle savedInstanceState) {
    savedInstance.putInt(some_key,value);
}

并在onCreateonRestoreInstanceState中恢复。