在执行外部数据库上传之前,我构建了一个单例类来检查我是否在线。
为此,这是班级:
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
为真,它跳过分支的真实情况怎么可能?
谢谢!