stacktrack:的Java空指针异常,但已经初始化
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean' java.util.ArrayList.add(java.lang.Object)' on a null object reference
at android.net.LinkProperties.<init>(LinkProperties.java:159)
at com.android.server.ConnectivityService.getUnfilteredActiveNetworkState(ConnectivityService.java:957)
at com.android.server.ConnectivityService.getActiveNetworkInfo(ConnectivityService.java:1024)
at android.net.ConnectivityManager.getActiveNetworkInfo(ConnectivityManager.java:696)
at
linkproperties.java:
public final class LinkProperties implements Parcelable {
// The interface described by the network link.
private String mIfaceName;
private ArrayList<LinkAddress> mLinkAddresses = new ArrayList<LinkAddress>();
private ArrayList<InetAddress> mDnses = new ArrayList<InetAddress>();
private String mDomains;
private ArrayList<RouteInfo> mRoutes = new ArrayList<RouteInfo>();
...
public LinkProperties(LinkProperties source) {
if (source != null) {
mIfaceName = source.getInterfaceName();
for (LinkAddress l : source.getLinkAddresses()) mLinkAddresses.add(l);
for (InetAddress i : source.getDnsServers()) mDnses.add(i);
mDomains = source.getDomains();
for (RouteInfo r : source.getRoutes()) mRoutes.add(r);
mHttpProxy = (source.getHttpProxy() == null) ?
null : new ProxyInfo(source.getHttpProxy());
for (LinkProperties l: source.mStackedLinks.values()) {
addStackedLink(l);
}
setMtu(source.getMtu());
mTcpBufferSizes = source.mTcpBufferSizes;
}
}
在堆栈跟踪,我们可以找到这个例外在init方法中发生的事情,这意味着当这个结构数据,而在做ArrayList.add方法时,抛出一个NullPointerException。所以在构造方法中,只有mLinkAddresses,mDnses和MRoutes这三个ArrayLists,但它们都已经被初始化。所以我对此感到困惑。
所有Arraylist在创建之前都已经初始化,但仍然得到NullPointerException
,而这个问题只发生在MTK平台上。
这是行159? – ItamarG3
是的,这是行159.此外,你确定你已经清理并重建你的项目,所以这是实际运行的代码?最后,你是否尝试过将'ArrayList'字段的初始化移入构造函数本身? –
@Ted Hopp我可以确定ArrayLists只有这三个字段的构造方法。所有这些都已经初始化。这个代码是AOSP,你们可以看看这个http://androidxref.com/7.1.1_r6/xref/frameworks/base/core/java/android/net/LinkProperties.java –