单例类的奇怪行为

时间:2016-06-08 07:13:10

标签: java android singleton

在执行外部数据库上传之前,我构建了一个单例类来检查我是否在线。

为此,这是班级:

public class InternetConnection
{
    private static InternetConnection instance = null;

    public static InternetConnection getInstance()
    {
        if(instance == null)
        {
            instance = new InternetConnection();
        }

        return instance;
    }


    private InternetConnection()
    {

    }

    public boolean isOnline(Context context)
    {

        ConnectivityManager connMgr = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
        return (networkInfo != null && networkInfo.isConnected());

    }
}

外面,在一个活动中,我称之为:

if (InternetConnection.getInstance().isOnline(this)) {
  //I am online, so I upload to my external database
} else {
  // I am not online
}

然而,当它进入getInstance()方法时,它会评估instance == null(当我调试时为true)但是,它不会进入真正的分支并执行instance = new InternetConnection(),而是跳过这个分支,返回null,这会导致外部的空对象异常。

为什么会这样?如果instance == null为真,它跳过分支的真实情况怎么可能?

谢谢!

0 个答案:

没有答案