|
@ -2,7 +2,6 @@ package com.ouxuan.oxface.network; |
|
|
|
|
|
|
|
|
import android.content.Context; |
|
|
import android.content.Context; |
|
|
import android.graphics.Color; |
|
|
import android.graphics.Color; |
|
|
import android.graphics.drawable.Drawable; |
|
|
|
|
|
import android.graphics.drawable.GradientDrawable; |
|
|
import android.graphics.drawable.GradientDrawable; |
|
|
import android.os.Handler; |
|
|
import android.os.Handler; |
|
|
import android.os.Looper; |
|
|
import android.os.Looper; |
|
@ -10,7 +9,6 @@ import android.util.Log; |
|
|
import android.view.Gravity; |
|
|
import android.view.Gravity; |
|
|
import android.view.View; |
|
|
import android.view.View; |
|
|
import android.view.ViewGroup; |
|
|
import android.view.ViewGroup; |
|
|
import android.widget.ImageView; |
|
|
|
|
|
import android.widget.LinearLayout; |
|
|
import android.widget.LinearLayout; |
|
|
import android.widget.PopupWindow; |
|
|
import android.widget.PopupWindow; |
|
|
import android.widget.RelativeLayout; |
|
|
import android.widget.RelativeLayout; |
|
@ -36,20 +34,20 @@ public class NetworkStatusIndicator { |
|
|
private static final int CHECK_INTERVAL = 10; // 检测间隔(秒) |
|
|
private static final int CHECK_INTERVAL = 10; // 检测间隔(秒) |
|
|
|
|
|
|
|
|
private Context context; |
|
|
private Context context; |
|
|
private ImageView networkIconView; |
|
|
|
|
|
|
|
|
private TextView networkTextView; // 改为TextView |
|
|
private RelativeLayout parentLayout; |
|
|
private RelativeLayout parentLayout; |
|
|
private ScheduledExecutorService scheduledExecutor; |
|
|
private ScheduledExecutorService scheduledExecutor; |
|
|
private Handler mainHandler; |
|
|
private Handler mainHandler; |
|
|
|
|
|
|
|
|
// 网络状态 |
|
|
// 网络状态 |
|
|
private NetworkStatus currentNetworkStatus = NetworkStatus.UNKNOWN; |
|
|
|
|
|
|
|
|
private NetworkStatus currentNetworkStatus = NetworkStatus.POOR; // 默认为异常状态 |
|
|
private boolean isMonitoring = false; |
|
|
private boolean isMonitoring = false; |
|
|
|
|
|
|
|
|
// 网络状态枚举 |
|
|
// 网络状态枚举 |
|
|
public enum NetworkStatus { |
|
|
public enum NetworkStatus { |
|
|
EXCELLENT(Color.parseColor("#00FF00"), "网络优秀"), // 绿色满格 |
|
|
|
|
|
GOOD(Color.parseColor("#FFFF00"), "网络良好"), // 黄色中等 |
|
|
|
|
|
POOR(Color.parseColor("#FF0000"), "网络异常"); // 红色X |
|
|
|
|
|
|
|
|
EXCELLENT(Color.parseColor("#00FF00"), "网络优秀"), // 绿色 |
|
|
|
|
|
GOOD(Color.parseColor("#FFFF00"), "网络良好"), // 黄色 |
|
|
|
|
|
POOR(Color.parseColor("#FF0000"), "网络异常"); // 红色 |
|
|
|
|
|
|
|
|
private final int color; |
|
|
private final int color; |
|
|
private final String description; |
|
|
private final String description; |
|
@ -67,7 +65,21 @@ public class NetworkStatusIndicator { |
|
|
return description; |
|
|
return description; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private static NetworkStatus UNKNOWN = POOR; // 默认为异常状态 |
|
|
|
|
|
|
|
|
// 网络状态信息类 |
|
|
|
|
|
private static class NetworkStatusInfo { |
|
|
|
|
|
NetworkStatus status; |
|
|
|
|
|
String displayText; |
|
|
|
|
|
|
|
|
|
|
|
NetworkStatusInfo(NetworkStatus status, String displayText) { |
|
|
|
|
|
this.status = status; |
|
|
|
|
|
this.displayText = displayText; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private String lastDisplayText = ""; |
|
|
|
|
|
|
|
|
|
|
|
private String getLastDisplayText() { |
|
|
|
|
|
return lastDisplayText; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public NetworkStatusIndicator(Context context, RelativeLayout parentLayout) { |
|
|
public NetworkStatusIndicator(Context context, RelativeLayout parentLayout) { |
|
@ -75,32 +87,45 @@ public class NetworkStatusIndicator { |
|
|
this.parentLayout = parentLayout; |
|
|
this.parentLayout = parentLayout; |
|
|
this.mainHandler = new Handler(Looper.getMainLooper()); |
|
|
this.mainHandler = new Handler(Looper.getMainLooper()); |
|
|
|
|
|
|
|
|
initNetworkIcon(); |
|
|
|
|
|
|
|
|
initNetworkTextView(); // 改为初始化TextView |
|
|
initExecutor(); |
|
|
initExecutor(); |
|
|
|
|
|
|
|
|
LogManager.logInfo(TAG, "网络状态指示器初始化完成"); |
|
|
LogManager.logInfo(TAG, "网络状态指示器初始化完成"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 初始化网络图标 |
|
|
|
|
|
|
|
|
* 初始化网络文字显示 |
|
|
*/ |
|
|
*/ |
|
|
private void initNetworkIcon() { |
|
|
|
|
|
networkIconView = new ImageView(context); |
|
|
|
|
|
|
|
|
private void initNetworkTextView() { |
|
|
|
|
|
networkTextView = new TextView(context); |
|
|
|
|
|
|
|
|
// 设置图标大小为24dp |
|
|
|
|
|
int iconSize = SizeUtils.dp2px(24); |
|
|
|
|
|
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(iconSize, iconSize); |
|
|
|
|
|
|
|
|
// 设置大小和位置 |
|
|
|
|
|
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( |
|
|
|
|
|
ViewGroup.LayoutParams.WRAP_CONTENT, |
|
|
|
|
|
ViewGroup.LayoutParams.WRAP_CONTENT); |
|
|
|
|
|
|
|
|
// 定位到右上角 |
|
|
// 定位到右上角 |
|
|
params.addRule(RelativeLayout.ALIGN_PARENT_TOP); |
|
|
params.addRule(RelativeLayout.ALIGN_PARENT_TOP); |
|
|
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); |
|
|
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); |
|
|
params.setMargins(0, SizeUtils.dp2px(16), SizeUtils.dp2px(16), 0); |
|
|
params.setMargins(0, SizeUtils.dp2px(16), SizeUtils.dp2px(16), 0); |
|
|
|
|
|
|
|
|
networkIconView.setLayoutParams(params); |
|
|
|
|
|
networkIconView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); |
|
|
|
|
|
|
|
|
networkTextView.setLayoutParams(params); |
|
|
|
|
|
|
|
|
|
|
|
// 设置文字样式 |
|
|
|
|
|
networkTextView.setTextSize(10); // 10sp字体大小 |
|
|
|
|
|
networkTextView.setTextColor(Color.WHITE); |
|
|
|
|
|
networkTextView.setPadding(SizeUtils.dp2px(6), SizeUtils.dp2px(4), SizeUtils.dp2px(6), SizeUtils.dp2px(4)); |
|
|
|
|
|
|
|
|
|
|
|
// 设置背景 |
|
|
|
|
|
GradientDrawable background = new GradientDrawable(); |
|
|
|
|
|
background.setShape(GradientDrawable.RECTANGLE); |
|
|
|
|
|
background.setColor(Color.parseColor("#80000000")); // 半透明黑色背景 |
|
|
|
|
|
background.setCornerRadius(SizeUtils.dp2px(4)); |
|
|
|
|
|
background.setStroke(SizeUtils.dp2px(1), Color.parseColor("#40FFFFFF")); // 半透明白色边框 |
|
|
|
|
|
networkTextView.setBackground(background); |
|
|
|
|
|
|
|
|
// 设置点击事件 |
|
|
// 设置点击事件 |
|
|
networkIconView.setOnClickListener(new View.OnClickListener() { |
|
|
|
|
|
|
|
|
networkTextView.setOnClickListener(new View.OnClickListener() { |
|
|
@Override |
|
|
@Override |
|
|
public void onClick(View v) { |
|
|
public void onClick(View v) { |
|
|
showNetworkDetailPopup(); |
|
|
showNetworkDetailPopup(); |
|
@ -108,12 +133,12 @@ public class NetworkStatusIndicator { |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
// 添加到父布局 |
|
|
// 添加到父布局 |
|
|
parentLayout.addView(networkIconView); |
|
|
|
|
|
|
|
|
parentLayout.addView(networkTextView); |
|
|
|
|
|
|
|
|
// 初始显示为异常状态 |
|
|
// 初始显示为异常状态 |
|
|
updateNetworkIcon(NetworkStatus.POOR); |
|
|
|
|
|
|
|
|
updateNetworkDisplay(NetworkStatus.POOR, "无网络"); |
|
|
|
|
|
|
|
|
LogManager.logInfo(TAG, "网络图标视图初始化完成"); |
|
|
|
|
|
|
|
|
LogManager.logInfo(TAG, "网络文字显示初始化完成"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
@ -180,75 +205,106 @@ public class NetworkStatusIndicator { |
|
|
* 检查网络状态 |
|
|
* 检查网络状态 |
|
|
*/ |
|
|
*/ |
|
|
private void checkNetworkStatus() { |
|
|
private void checkNetworkStatus() { |
|
|
NetworkStatus newStatus = evaluateNetworkStatus(); |
|
|
|
|
|
|
|
|
NetworkStatusInfo statusInfo = evaluateNetworkStatus(); |
|
|
|
|
|
|
|
|
if (newStatus != currentNetworkStatus) { |
|
|
|
|
|
|
|
|
if (!statusInfo.status.equals(currentNetworkStatus) || |
|
|
|
|
|
!statusInfo.displayText.equals(getLastDisplayText())) { |
|
|
NetworkStatus oldStatus = currentNetworkStatus; |
|
|
NetworkStatus oldStatus = currentNetworkStatus; |
|
|
currentNetworkStatus = newStatus; |
|
|
|
|
|
|
|
|
currentNetworkStatus = statusInfo.status; |
|
|
|
|
|
|
|
|
// 在主线程中更新UI |
|
|
// 在主线程中更新UI |
|
|
|
|
|
final String displayText = statusInfo.displayText; |
|
|
mainHandler.post(new Runnable() { |
|
|
mainHandler.post(new Runnable() { |
|
|
@Override |
|
|
@Override |
|
|
public void run() { |
|
|
public void run() { |
|
|
updateNetworkIcon(currentNetworkStatus); |
|
|
|
|
|
|
|
|
updateNetworkDisplay(currentNetworkStatus, displayText); |
|
|
|
|
|
|
|
|
// 如果网络从异常恢复到正常,显示Toast提示 |
|
|
// 如果网络从异常恢复到正常,显示Toast提示 |
|
|
if (oldStatus == NetworkStatus.POOR && |
|
|
if (oldStatus == NetworkStatus.POOR && |
|
|
(newStatus == NetworkStatus.EXCELLENT || newStatus == NetworkStatus.GOOD)) { |
|
|
|
|
|
|
|
|
(currentNetworkStatus == NetworkStatus.EXCELLENT || currentNetworkStatus == NetworkStatus.GOOD)) { |
|
|
Toast.makeText(context, "网络连接已恢复", Toast.LENGTH_SHORT).show(); |
|
|
Toast.makeText(context, "网络连接已恢复", Toast.LENGTH_SHORT).show(); |
|
|
LogManager.logInfo(TAG, "网络连接已恢复:" + newStatus.getDescription()); |
|
|
|
|
|
|
|
|
LogManager.logInfo(TAG, "网络连接已恢复:" + currentNetworkStatus.getDescription()); |
|
|
} |
|
|
} |
|
|
// 如果网络变为异常,也显示提示 |
|
|
// 如果网络变为异常,也显示提示 |
|
|
else if (newStatus == NetworkStatus.POOR && oldStatus != NetworkStatus.POOR) { |
|
|
|
|
|
|
|
|
else if (currentNetworkStatus == NetworkStatus.POOR && oldStatus != NetworkStatus.POOR) { |
|
|
Toast.makeText(context, "网络连接异常", Toast.LENGTH_SHORT).show(); |
|
|
Toast.makeText(context, "网络连接异常", Toast.LENGTH_SHORT).show(); |
|
|
LogManager.logWarning(TAG, "网络连接异常"); |
|
|
LogManager.logWarning(TAG, "网络连接异常"); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
LogManager.logDebug(TAG, "网络状态变化:" + oldStatus.getDescription() + " -> " + newStatus.getDescription()); |
|
|
|
|
|
|
|
|
LogManager.logDebug(TAG, "网络状态变化:" + oldStatus.getDescription() + " -> " + currentNetworkStatus.getDescription() + " (" + displayText + ")"); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 评估网络状态 |
|
|
* 评估网络状态 |
|
|
*/ |
|
|
*/ |
|
|
private NetworkStatus evaluateNetworkStatus() { |
|
|
|
|
|
|
|
|
private NetworkStatusInfo evaluateNetworkStatus() { |
|
|
try { |
|
|
try { |
|
|
// 1. 检查基本连接状态 |
|
|
// 1. 检查基本连接状态 |
|
|
if (!NetworkUtils.isConnected()) { |
|
|
if (!NetworkUtils.isConnected()) { |
|
|
LogManager.logDebug(TAG, "网络未连接"); |
|
|
LogManager.logDebug(TAG, "网络未连接"); |
|
|
return NetworkStatus.POOR; |
|
|
|
|
|
|
|
|
return new NetworkStatusInfo(NetworkStatus.POOR, "无网络"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 2. 检查连接类型 |
|
|
// 2. 检查连接类型 |
|
|
NetworkUtils.NetworkType networkType = NetworkUtils.getNetworkType(); |
|
|
NetworkUtils.NetworkType networkType = NetworkUtils.getNetworkType(); |
|
|
boolean isWifi = NetworkUtils.isWifiConnected(); |
|
|
boolean isWifi = NetworkUtils.isWifiConnected(); |
|
|
|
|
|
|
|
|
|
|
|
String networkTypeText = getNetworkTypeDisplayText(networkType, isWifi); |
|
|
|
|
|
|
|
|
// 3. 检查主域名可达性 |
|
|
// 3. 检查主域名可达性 |
|
|
boolean isDomainReachable = checkDomainReachability(); |
|
|
boolean isDomainReachable = checkDomainReachability(); |
|
|
|
|
|
|
|
|
if (!isDomainReachable) { |
|
|
if (!isDomainReachable) { |
|
|
LogManager.logDebug(TAG, "主域名不可达"); |
|
|
LogManager.logDebug(TAG, "主域名不可达"); |
|
|
return NetworkStatus.POOR; |
|
|
|
|
|
|
|
|
return new NetworkStatusInfo(NetworkStatus.POOR, networkTypeText + "!"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 4. 根据网络类型和可达性判断质量 |
|
|
// 4. 根据网络类型和可达性判断质量 |
|
|
if (isWifi || networkType == NetworkUtils.NetworkType.NETWORK_ETHERNET) { |
|
|
if (isWifi || networkType == NetworkUtils.NetworkType.NETWORK_ETHERNET) { |
|
|
LogManager.logDebug(TAG, "网络状态优秀:WiFi/以太网且域名可达"); |
|
|
LogManager.logDebug(TAG, "网络状态优秀:WiFi/以太网且域名可达"); |
|
|
return NetworkStatus.EXCELLENT; |
|
|
|
|
|
|
|
|
return new NetworkStatusInfo(NetworkStatus.EXCELLENT, networkTypeText); |
|
|
} else if (networkType == NetworkUtils.NetworkType.NETWORK_4G || |
|
|
} else if (networkType == NetworkUtils.NetworkType.NETWORK_4G || |
|
|
networkType == NetworkUtils.NetworkType.NETWORK_5G) { |
|
|
networkType == NetworkUtils.NetworkType.NETWORK_5G) { |
|
|
LogManager.logDebug(TAG, "网络状态良好:4G/5G且域名可达"); |
|
|
LogManager.logDebug(TAG, "网络状态良好:4G/5G且域名可达"); |
|
|
return NetworkStatus.GOOD; |
|
|
|
|
|
|
|
|
return new NetworkStatusInfo(NetworkStatus.GOOD, networkTypeText); |
|
|
} else { |
|
|
} else { |
|
|
LogManager.logDebug(TAG, "网络状态一般:其他网络类型"); |
|
|
LogManager.logDebug(TAG, "网络状态一般:其他网络类型"); |
|
|
return NetworkStatus.GOOD; |
|
|
|
|
|
|
|
|
return new NetworkStatusInfo(NetworkStatus.GOOD, networkTypeText); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
} catch (Exception e) { |
|
|
LogManager.logError(TAG, "网络状态评估失败", e); |
|
|
LogManager.logError(TAG, "网络状态评估失败", e); |
|
|
return NetworkStatus.POOR; |
|
|
|
|
|
|
|
|
return new NetworkStatusInfo(NetworkStatus.POOR, "错误"); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 获取网络类型显示文字 |
|
|
|
|
|
*/ |
|
|
|
|
|
private String getNetworkTypeDisplayText(NetworkUtils.NetworkType networkType, boolean isWifi) { |
|
|
|
|
|
if (isWifi) { |
|
|
|
|
|
return "WiFi"; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
switch (networkType) { |
|
|
|
|
|
case NETWORK_ETHERNET: |
|
|
|
|
|
return "以太网"; |
|
|
|
|
|
case NETWORK_5G: |
|
|
|
|
|
return "5G"; |
|
|
|
|
|
case NETWORK_4G: |
|
|
|
|
|
return "4G"; |
|
|
|
|
|
case NETWORK_3G: |
|
|
|
|
|
return "3G"; |
|
|
|
|
|
case NETWORK_2G: |
|
|
|
|
|
return "2G"; |
|
|
|
|
|
case NETWORK_WIFI: |
|
|
|
|
|
return "WiFi"; |
|
|
|
|
|
case NETWORK_UNKNOWN: |
|
|
|
|
|
default: |
|
|
|
|
|
return "未知"; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -290,50 +346,23 @@ public class NetworkStatusIndicator { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 更新网络图标 |
|
|
|
|
|
|
|
|
* 更新网络显示 |
|
|
*/ |
|
|
*/ |
|
|
private void updateNetworkIcon(NetworkStatus status) { |
|
|
|
|
|
Drawable icon = createNetworkIcon(status); |
|
|
|
|
|
networkIconView.setImageDrawable(icon); |
|
|
|
|
|
|
|
|
private void updateNetworkDisplay(NetworkStatus status, String displayText) { |
|
|
|
|
|
// 更新文字内容 |
|
|
|
|
|
networkTextView.setText(displayText); |
|
|
|
|
|
|
|
|
LogManager.logDebug(TAG, "网络图标已更新:" + status.getDescription()); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// 更新文字颜色 |
|
|
|
|
|
networkTextView.setTextColor(status.getColor()); |
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 创建网络图标 |
|
|
|
|
|
*/ |
|
|
|
|
|
private Drawable createNetworkIcon(NetworkStatus status) { |
|
|
|
|
|
GradientDrawable drawable = new GradientDrawable(); |
|
|
|
|
|
|
|
|
|
|
|
switch (status) { |
|
|
|
|
|
case EXCELLENT: |
|
|
|
|
|
// 绿色信号满格图标(矩形) |
|
|
|
|
|
drawable.setShape(GradientDrawable.RECTANGLE); |
|
|
|
|
|
drawable.setColor(status.getColor()); |
|
|
|
|
|
drawable.setCornerRadius(SizeUtils.dp2px(3)); |
|
|
|
|
|
drawable.setSize(SizeUtils.dp2px(24), SizeUtils.dp2px(18)); |
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case GOOD: |
|
|
|
|
|
// 黄色中等信号图标(矩形,稍小) |
|
|
|
|
|
drawable.setShape(GradientDrawable.RECTANGLE); |
|
|
|
|
|
drawable.setColor(status.getColor()); |
|
|
|
|
|
drawable.setCornerRadius(SizeUtils.dp2px(3)); |
|
|
|
|
|
drawable.setSize(SizeUtils.dp2px(24), SizeUtils.dp2px(15)); |
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case POOR: |
|
|
|
|
|
default: |
|
|
|
|
|
// 红色X图标(圆形) |
|
|
|
|
|
drawable.setShape(GradientDrawable.OVAL); |
|
|
|
|
|
drawable.setColor(status.getColor()); |
|
|
|
|
|
drawable.setSize(SizeUtils.dp2px(24), SizeUtils.dp2px(24)); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// 保存显示文字 |
|
|
|
|
|
lastDisplayText = displayText; |
|
|
|
|
|
|
|
|
return drawable; |
|
|
|
|
|
|
|
|
LogManager.logDebug(TAG, "网络显示已更新:" + status.getDescription() + " (" + displayText + ")"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 显示网络详细信息弹窗 |
|
|
* 显示网络详细信息弹窗 |
|
|
*/ |
|
|
*/ |
|
@ -363,8 +392,8 @@ public class NetworkStatusIndicator { |
|
|
popup.setFocusable(true); |
|
|
popup.setFocusable(true); |
|
|
popup.setOutsideTouchable(true); |
|
|
popup.setOutsideTouchable(true); |
|
|
|
|
|
|
|
|
// 显示在图标下方 |
|
|
|
|
|
popup.showAsDropDown(networkIconView, -SizeUtils.dp2px(150), SizeUtils.dp2px(5)); |
|
|
|
|
|
|
|
|
// 显示在文字下方 |
|
|
|
|
|
popup.showAsDropDown(networkTextView, -SizeUtils.dp2px(150), SizeUtils.dp2px(5)); |
|
|
|
|
|
|
|
|
// 3秒后自动关闭 |
|
|
// 3秒后自动关闭 |
|
|
mainHandler.postDelayed(new Runnable() { |
|
|
mainHandler.postDelayed(new Runnable() { |
|
@ -473,9 +502,9 @@ public class NetworkStatusIndicator { |
|
|
public void destroy() { |
|
|
public void destroy() { |
|
|
stopMonitoring(); |
|
|
stopMonitoring(); |
|
|
|
|
|
|
|
|
if (networkIconView != null && parentLayout != null) { |
|
|
|
|
|
parentLayout.removeView(networkIconView); |
|
|
|
|
|
networkIconView = null; |
|
|
|
|
|
|
|
|
if (networkTextView != null && parentLayout != null) { |
|
|
|
|
|
parentLayout.removeView(networkTextView); |
|
|
|
|
|
networkTextView = null; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
LogManager.logInfo(TAG, "网络状态指示器已销毁"); |
|
|
LogManager.logInfo(TAG, "网络状态指示器已销毁"); |
|
|