相关疑难解决方法(0)

Android不会破坏后退按钮上的数据

在onCreate()方法中,我加载了一个级别列表.它存储在单例结构中(使用枚举).当我按下后退按钮并再次返回时,列表仍然存在,并再次添加所有级别.我不明白为什么会发生这种情况,因为Activity Lifecycle声明该进程在再次调用onCreate()之前被终止.

为什么会这样?

编辑,一些代码:

在单独的文件中:

public enum GameInformation {
   INSTANCE;
       public List<Level> levelSet;

       public void loadLevelSet(Context context) {
       ...
       }
}
Run Code Online (Sandbox Code Playgroud)

在主要活动中:

public void onCreate(Bundle savedInstanceState) {
    GameInformation.INSTANCE.loadLevelSet(this);
}
Run Code Online (Sandbox Code Playgroud)

java android android-activity

0
推荐指数
1
解决办法
747
查看次数

Singleton类只有静态字段和方法,但在内存中有很多实例

在我们的项目中,我们经常使用实用程序类及其静态方法来加载一些图标.这个实用程序类是单例.

但是在运行环境中,我们找到了这个类的314个实例,在哪种情况下会发生这种情况?

java

0
推荐指数
1
解决办法
311
查看次数

在 Android 中进行单例延迟初始化的正确方法是什么?

在工作中的 Sonar 报告中,我们对 Android 项目提出了一些警告:

多线程正确性 - 静态字段 findbugs 的延迟初始化不正确:LI_LAZY_INIT_STATIC

为了纠正这些问题,我被引导到有关双重检查锁定的维基百科条目

http://en.wikipedia.org/wiki/Double_checked_locking_pattern#Usage_in_Java

当我查看 Android 框架代码时,我没有看到使用双重检查锁定,例如,WebViewDatabase 类只是使其 getInstance(Context) 方法同步:

public static synchronized WebViewDatabase getInstance(Context context) {
    if (mInstance == null) {
        mInstance = new WebViewDatabase(context);
    }
    return mInstance;
}
Run Code Online (Sandbox Code Playgroud)

Android 中正确的方法是什么?

提前致谢

android

0
推荐指数
1
解决办法
3229
查看次数

究竟什么是Enum?

现在我想弄清楚java中的Enum到底是什么.我知道它们是如何工作的以及如何/何时使用它们但是我对它们究竟是什么有点不清楚.基于他们的行为,在我看来,他们只不过是一个私有构造函数的类.然而,在我看来,编译器正在对它们做一些特殊的事情,因为Enums有一个特殊的方法values(),它不会出现在Oracle doc站点的Enum类中.

我的问题是,Enums究竟是什么以及编译器如何解释它们?

java

0
推荐指数
1
解决办法
221
查看次数

这个Singleton是一个线程安全吗?我看不出来怎么样?

考虑Singleton:

public final class MySingleton {
    private static class Nested 
    {
        private static final MySingleton INSTANCE = new MySingleton();
    }

    private MySingleton() 
    {
        if (Nested.INSTANCE != null) 
        {
            throw new IllegalStateException("Already instantiated");
        }
    }

    public static MySingleton getInstance() 
    {
        return Nested.INSTANCE;
    }
}
Run Code Online (Sandbox Code Playgroud)

我没有放任何锁,但为什么这是Singleton问题的线程安全解决方案?

java singleton multithreading thread-safety

0
推荐指数
1
解决办法
69
查看次数

班级是单身还是不单身.如何将类作为单例或原型 - 在Spring中

默认情况下,一个类是单身还是不单身.

public class You{
}
Run Code Online (Sandbox Code Playgroud)
public class My(){
public static void main(String a[]){

You you=new You();

}
}
Run Code Online (Sandbox Code Playgroud)

you对象是单身..如果它是单身如何使它成为原型..如果它是原型如何使一个类作为单身..

先感谢您..

java singleton spring

-2
推荐指数
1
解决办法
136
查看次数

创建单例对象,最好的方法

我想创建一个单例对象,我找到了3种方法,其中一种更好,为什么其他方式不好.假定构造函数是私有的.

方法1:

class ClassX{  
   private static ClassX objX = null;

      static{
          objX = new ClassX();
      }

   //get objX method
 }
Run Code Online (Sandbox Code Playgroud)

方法2:

 class ClassX{  
   private static ClassX objX = new ClassX();

   //get objX method
 }
Run Code Online (Sandbox Code Playgroud)

方法3:

 class ClassX{  
   private static ClassX objX = null;

   public ClassX getInstance(){
      if(objX == null)
          return new ClassX();
      else
          return objX;
   }
 }
Run Code Online (Sandbox Code Playgroud)

java singleton

-2
推荐指数
1
解决办法
1万
查看次数