Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.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
Java 我应该在onResume()或onCreate()中获取类的实例吗_Java_Android_Android Studio - Fatal编程技术网

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