gpt4 book ai didi

android - 处理互联网可用性的最佳实践

转载 作者:行者123 更新时间:2023-11-29 01:49:36 24 4
gpt4 key购买 nike

我的 Android 应用高度依赖互联网连接。

这是一款用于网络广播的应用程序。 MainActivity 显示当前信息,例如是否有 dj 正在播放或是否有播放列表(并不时刷新其数据)。

还有两个 Activity 显示更多来自互联网的数据(轨道列表和即将播出的节目)。

目前我检查了我的 mainactivity 的启动,我在其中测试 wifi、移动或 wimax 是否已连接,如果没有连接,我会显示一条消息并退出应用程序。

但我对此感到非常难过。首先,我认为关闭应用程序不是一个好主意,而且检查是一次。所以如果我打开应用程序然后打开平面模式,应用程序会继续运行并尝试更新数据 -> 失败...

我现在需要的是如何改进“我在线”测试的建议。我目前的想法是为 ConnectivityManager.CONNECTIVITY_ACTION 创建一个 BroadcastReceiver,然后在某处存储一个 bool 值 connected,我可以在我的其他代码中查找它。

有人知道如何以尽可能干净的方式解决这个问题吗?

提前致谢!

最佳答案

在你的包中添加 AppStatus 类

    import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.Log;

public class AppStatus {

private static AppStatus instance = new AppStatus();
private ConnectivityManager connectivityManager;
private static Context context;
private boolean connected = false;

public static AppStatus getInstance(Context ctx) {

context = ctx;
return instance;
}

// Check internet connection available
public Boolean isOnline(Context con) {

try {
connectivityManager = (ConnectivityManager) con
.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo networkInfo = connectivityManager
.getActiveNetworkInfo();
connected = networkInfo != null && networkInfo.isAvailable()
&& networkInfo.isConnected();
return connected;

} catch (Exception e) {
Log.v("connectivity", e.toString());
}

return connected;
}
}

现在获取此类方法来查找互联网可用性,如下所示:

    if (AppStatus.getInstance(Activity.this).isOnline(
Activity.this)) {
}

在AndroidManifest中添加这些权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

关于android - 处理互联网可用性的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19063679/

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