Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用static而不是parcelable/serialize——这不好吗?_Android - Fatal编程技术网

Android 使用static而不是parcelable/serialize——这不好吗?

Android 使用static而不是parcelable/serialize——这不好吗?,android,Android,我需要在不同的活动之间保留对对象的引用。这两次提及似乎在不同的活动中创造了新的对象。这是一个问题,因为一旦父活动获得焦点,对“子”活动中对象的更改就不会持续。我的解决方案就是在子活动调用并使用的父most活动中创建一个静态getter。这样做是不是不正确 如果要在活动之间共享对象的单个实例,可以创建一个singleton类。使用父most活动类实现单例的唯一错误可能是它可能违反了。通过将对象作为应用程序派生类中的字段,可以使其在整个应用程序生命周期中保持不变 public class MyApp

我需要在不同的活动之间保留对对象的引用。这两次提及似乎在不同的活动中创造了新的对象。这是一个问题,因为一旦父活动获得焦点,对“子”活动中对象的更改就不会持续。我的解决方案就是在子活动调用并使用的父most活动中创建一个静态getter。这样做是不是不正确

如果要在活动之间共享对象的单个实例,可以创建一个singleton类。使用父most活动类实现单例的唯一错误可能是它可能违反了。

通过将对象作为
应用程序派生类中的字段,可以使其在整个应用程序生命周期中保持不变

public class MyAppication extends Application {

private Object mMyData; 

public setData(Object data) {
    mMyData = data;
}

public Object getData() {
      return mMyData;
}
}

然后
((MyApplication)GetApplication()).setData
getData()

通过这种方式,您可以在应用程序内交换数据,因为
MyApplication
将始终存在


您还必须将
myapplication
添加到manifest

您应该创建一个Singleton,无论何时与它对话,它都有一个实例。(就像你描述的那样)


这里是我前面提到的一个:

为什么要对上下文进行静态引用。我可以将一个活动传递给你的单身汉,然后改变方向,活动会被销毁,但你的上下文字段会保存它。此外,您可能能够使用不再是validIt的私有引用的上下文。该类是具有一个全局上下文的单例,如果这成为问题,则取决于您在该类中对上下文的使用。对该单例的引用将随活动一起销毁。下一次,当您请求单例时,您将被迫更新上下文。啊,所以它不是100%的单例。我明白你的意思。对单例的引用保存在一个静态字段中,因此引用不会随活动一起被破坏。您的代码将泄漏一个被方向更改破坏的活动。一种修复方法是在singleton类中存储
context.getApplicationContext()