gpt4 book ai didi

android - 网络可用性检查返回 false 但电话在线

转载 作者:行者123 更新时间:2023-11-30 04:51:11 26 4
gpt4 key购买 nike

在检查网络是否可用时,我在获得一致结果方面遇到了一些问题。

我在 AppPreferences 类中使用此代码 fragment 来检查网络的可用性。

/**
* @return the networkAvailable
*/
public boolean isNetworkAvailable() {
connectionManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
networkAvailable = connectionManager.getActiveNetworkInfo() != null && connectionManager.getActiveNetworkInfo().isConnected();
return networkAvailable;
}

在每次运行之前,我将上下文设置如下:

timer.scheduleAtFixedRate(

new TimerTask() {

public void run() {

appPreferences.setContext(getBaseContext());

if (appPreferences.isNetworkAvailable()){

// perform task

}

}
},
0,
UPDATE_INTERVAL);

我知道它没有绑定(bind)到后台线程,因为我有一个 onReceive 调用执行相同的逻辑,但此检查仍然失败。

它似乎主要发生在蜂窝数据连接和 wifi 之间移动时,反之亦然。即使我更新它,启动它的上下文似乎仍然存在。

有谁知道这里的问题是什么?

最佳答案

似乎 Activity 网络信息将保持在服务/Activity/接收器的上下文启动时的状态。因此,如果您在网络上启动它,然后断开连接(即从 3G 移动到 Wifi 并断开 3G 连接),它将保持在第一个 Activity 连接上,使应用程序认为手机处于离线状态,即使它不是。

在我看来,最好的解决方案是改用用户 getApplicationContext,因为它不会绑定(bind)到您何时开始特定“任务”。

更新:相关的是,如果您在连接到 Wifi 的情况下长时间在 Android(尤其是 Nexus One)上运行应用程序,请检查您是否确保没有让 Wifi 休眠当屏幕休眠时。您将能够在无线网络下的高级选项中进行设置。

关于android - 网络可用性检查返回 false 但电话在线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3283828/

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