gpt4 book ai didi

java - 如何在 Android 手机唤醒时可靠地检测互联网连接

转载 作者:行者123 更新时间:2023-12-01 15:00:32 24 4
gpt4 key购买 nike

我有一个在启动时依赖互联网连接的应用程序,我可以使用下面的代码检测到这一点。

但是,当手机闲置一段时间后,我解锁并启动应用程序时,它不会立即找到连接,我必须再次重新启动应用程序才能成功。

我尝试在线程中等待并再次重试下面的代码,但也没有成功。

任何想法都将不胜感激,谢谢。

代码

    // check Network/Internet connection
public boolean isOnline() {

try {
ConnectivityManager cm = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
boolean haveConnectedWifi = false;
boolean haveConnectedMobile = false;

cm = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] netInfo = cm.getAllNetworkInfo();

for (NetworkInfo ni : netInfo) {
if (ni.getTypeName().equalsIgnoreCase("WIFI")) {
if (ni.isConnected()) {
haveConnectedWifi = true;
}
}
if (ni.getTypeName().equalsIgnoreCase("MOBILE")) {
if (ni.isConnected()) {
haveConnectedMobile = true;
}
}
}
return haveConnectedWifi || haveConnectedMobile;
} catch (Exception e) {
Log.e(TAG, e.toString());
}
return false;
}

最佳答案

将代码放入 Activity 的 onResume() 中。这样,每次您返回 Activity 时都会检查它。

此外,添加一个标志以了解是否检查连接,并在 Activity 的 onPause() 中将该标志设置为 true。在 onResume() 中将其重置为 false。

类似于:

boolean check;

protected void onCreate(Bundle blah) {
super(blah);
check = true;
// whatever else
}

protected void onResume() {
if(check) {
isOnline();
// Everything else

check = false;
}
super.onResume();
}

protected void onPause() {
check = true;
super.onPause();
}

编辑:除非此 Activity 正在恢复,否则不会调用onResume(),因此您可以添加:

protected void onResume() {
isOnline();
// Everything else
super.onResume();
}

查看 Android dev site 中的流程图为了更好地理解: enter image description here

关于java - 如何在 Android 手机唤醒时可靠地检测互联网连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13717278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com