[RK3399][Android7.1.1]Ethernet-网路状态变化时无法更新IP的问题
2019-03-30 21:05
1886 查看
测试平台
Platform: RK3399
OS: Android 7.1.1
现象
机器通过交换机连接路由器,当路由器断电或者断开和交换机的连接时,机器的IP地址无法及时更新的问题.
分析
Android7.1.1使用IpReachabilityMonitor来监视链路IP的可达性,无论任何时候,一旦所关注的链路地址变的不响应时,就会通知调用者,所以我们在这里进行处理。
解决方案
diff --git a/frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetNetworkFactory.java b/frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetNetworkFactory.java index d6050aa..6d4c3e9 100755 (executable) --- a/frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetNetworkFactory.java +++ b/frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetNetworkFactory.java @@ -495,6 +495,8 @@ class EthernetNetworkFactory { @Override public void onLinkPropertiesChange(LinkProperties newLp) { Log.d(TAG, "onLinkPropertiesChange: lp = " + newLp); + synchronized(EthernetNetworkFactory.this) { if (mNetworkAgent != null && mNetworkInfo.isConnected()) { mLinkProperties = newLp; @@ -502,6 +504,15 @@ class EthernetNetworkFactory { } } } + + @Override + public void onProvisioningFailure(LinkProperties newLp) { + Log.d("sjfn", "onProvisioningFailure: lp = " + newLp); + synchronized(EthernetNetworkFactory.this) { + setInterfaceDown(); + setInterfaceUp(); + } + } };
diff --git a/frameworks/base/services/net/java/android/net/ip/IpManager.java b/frameworks/base/services/net/java/android/net/ip/IpManager.java index 35d2870..53e91e2 100755 (executable) --- a/frameworks/base/services/net/java/android/net/ip/IpManager.java +++ b/frameworks/base/services/net/java/android/net/ip/IpManager.java @@ -1048,7 +1051,10 @@ public class IpManager extends StateMachine { new IpReachabilityMonitor.Callback() { @Override public void notifyLost(InetAddress ip, String logMsg) { mCallback.onReachabilityLost(logMsg); + Log.v("sjfn","mInterfaceName:"+mInterfaceName+",mClatInterfaceName:"+mClatInterfaceName); + stopAllIP(); } }, mAvoidBadWifiTracker);
相关文章推荐
- 解决android界面无法保持全屏状态的问题
- android sdk manager网络问题无法更新
- Android 利用adapter.notifyDataSetChanged()无法更新问题
- Android ADT更新后无法编译生成R.java的问题解决方案
- 解决Android Studio 和 Android SDK Manager 无法在线更新的问题.
- Android Studio 更新 Android 6.0 之后无法找到 org.apache.http 包的问题
- [2013-9-8]:近日Android-SDK无法更新的问题解决
- 解决Android SDK Manager无法更新的问题
- 新手搭建android项目无法在线更新ADT的问题解决!链接不上dl-ssl.google.com问题解决!
- MAC Android Studio SDK 无法更新问题
- Android Studio 更新 Android 6.0 之后无法找到 org.apache.http 包的问题
- Android Studio SDK Manager 解决无法更新问题
- 解决Android Studio 和 Android SDK Manager 无法在线更新的问题.
- 解决Android SDK Manager,ADT无法在线更新的问题
- Android SDK Manager无法更新问题解决
- 【转】解决Android SDK Manager无法更新的问题
- 解决Android SDK Manager无法更新问题