Java 我应该在onResume()或onCreate()中获取类的实例吗
我的直觉告诉我在Java 我应该在onResume()或onCreate()中获取类的实例吗,java,android,android-studio,Java,Android,Android Studio,我的直觉告诉我在onCreate()中做一次,但我不确定每次都有一个新实例是否有好处。这里的最佳实践是什么?除非有理由,否则不应重新实例化已有的对象!重新创建对象只会获得更多内存,并为GC产生更多垃圾,这对效率不利 因此,在onCreate()中初始化所需的对象,除非有理由,否则不应重新实例化已有的对象!重新创建对象只会获得更多内存,并为GC产生更多垃圾,这对效率不利 因此,在onCreate()中初始化所需的对象,我们需要更多的上下文来给您一个直接的答案。这两种方法都可能被多次调用,具体取决于
onCreate()
中做一次,但我不确定每次都有一个新实例是否有好处。这里的最佳实践是什么?除非有理由,否则不应重新实例化已有的对象!重新创建对象只会获得更多内存,并为GC产生更多垃圾,这对效率不利
因此,在
onCreate()
中初始化所需的对象,除非有理由,否则不应重新实例化已有的对象!重新创建对象只会获得更多内存,并为GC产生更多垃圾,这对效率不利
因此,在
onCreate()
中初始化所需的对象,我们需要更多的上下文来给您一个直接的答案。这两种方法都可能被多次调用,具体取决于用户正在做什么
我建议将对象实例默认为null,在onCreate()
和/或onResume()
中,仅当它为null时才初始化它
if(objectInstance == null)
{
objectInstance = new MyObject();
}
我们需要更多的上下文来给你一个直接的答案。这两种方法都可能被多次调用,具体取决于用户正在做什么 我建议将对象实例默认为null,在
onCreate()
和/或onResume()
中,仅当它为null时才初始化它
if(objectInstance == null)
{
objectInstance = new MyObject();
}
正如Hojjat指出的,不应重新实例化对象,如果对象当前不存在,则必须重新创建对象
if(myObject == null){
myObject = new ObjectFoo();
}
但如果您使用的是服务,则可能需要进行初始化:
class A extends Activity{
public ServiceClass mService = null; // service objecct
public void onCreate(){
mService = new ServiceClass();
}
public void onResume(){
mService.methodA();
}
}
正如Hojjat指出的,不应重新实例化对象,如果对象当前不存在,则必须重新创建对象
if(myObject == null){
myObject = new ObjectFoo();
}
但如果您使用的是服务,则可能需要进行初始化:
class A extends Activity{
public ServiceClass mService = null; // service objecct
public void onCreate(){
mService = new ServiceClass();
}
public void onResume(){
mService.methodA();
}
}
什么课?什么例子?这取决于你想要什么
onCreate()
每次创建活动时都会运行,但如果在您返回时暂停,则不会运行。onResume()
每次获得焦点时都会运行活动。假设你的应用程序需要网络连接,你可能想检查你是否有连接onResume()
,以防止人们在游戏期间禁用它。什么课程?什么例子?这取决于你想要什么onCreate()
每次创建活动时都会运行,但如果在您返回时暂停,则不会运行。onResume()
每次获得焦点时都会运行活动。假设你的应用程序需要网络连接,可能你想检查你是否有连接onResume()
,以防止人们在游戏期间禁用它。在我的情况下,我正在启动WifiManager。谢谢你的回复!我还使用了一个名为Wifi
的特定于应用程序的类,我将WifiManager
的getScanResults()
列表存储在该类中。我从MainActivity
获取结果,并在列表片段中访问它们(这是一种糟糕的做法吗?)。我担心如果我使用if(instance==null)
列表将不会更新为新结果。我不熟悉这些Wifi
或WifiManager
类,但您可以这样做:if(instance==null | instance.needToUpdateResults())
您需要定义第二种方法。很抱歉,我不知道在需要更新方法中添加什么好,您所说的“我很担心……列表不会用新结果更新”是什么意思?何时需要用新结果更新?如果您需要更新wifi对象实例,我建议的方法应该返回,true
。在我的情况下,我正在启动WifiManager。谢谢你的回复!我还使用了一个名为Wifi
的特定于应用程序的类,我将WifiManager
的getScanResults()
列表存储在该类中。我从MainActivity
获取结果,并在列表片段中访问它们(这是一种糟糕的做法吗?)。我担心如果我使用if(instance==null)
列表将不会更新为新结果。我不熟悉这些Wifi
或WifiManager
类,但您可以这样做:if(instance==null | instance.needToUpdateResults())
您需要定义第二种方法。很抱歉,我不知道在需要更新方法中添加什么好,您所说的“我很担心……列表不会用新结果更新”是什么意思?何时需要用新结果更新?如果需要更新wifi对象实例,我建议的方法应该返回true
。