我正在开发一个用于检查互联网连接的Android广播接收器.
问题是我的广播接收器被调用了两次.我希望它只在网络可用时才被调用.如果它不可用,我不希望得到通知.
这是广播接收器
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
final ConnectivityManager connMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
final android.net.NetworkInfo wifi = connMgr
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
final android.net.NetworkInfo mobile = connMgr
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (wifi.isAvailable() || mobile.isAvailable()) {
// Do something
Log.d("Network Available ", "Flag No 1");
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是manifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.broadcastreceiverforinternetconnection"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver android:name=".NetworkChangeReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" …Run Code Online (Sandbox Code Playgroud) java android broadcastreceiver android-networking android-wifi
在Android N中,官方网站上提到"针对Android N的应用不接收CONNECTIVITY_ACTION广播".并且还提到JobScheduler可以用作替代方案.但是JobScheduler它没有提供与CONNECTIVITY_ACTION广播完全相同的行为.
在我的Android应用程序中,我使用此广播来了解设备的网络状态.我想知道,如果在该状态CONNECTING或CONNECTED的帮助下CONNECTIVITY_ACTION广播和它是最适合我的要求.
现在它已被弃用,任何人都可以建议我获得当前网络状态的替代方法吗?
我正在创建一个应用程序,用户将频繁的信息和文件上传到我的服务器.这是通过专用的上传器服务在新线程中完成的.
我从这个帖子中知道
你可以相对容易地检查是否有互联网连接.您还可以获取socketTimeoutExceptions以检测Internet连接问题.所有这一切都很好,并且当连接因任何原因无法正常工作时,我可以轻松地缓存上传内容.
我的问题是如何知道何时重新上传?连接恢复时是否触发了事件?或者我是不是在制作一个睡眠的新线程,然后每30秒检查一次互联网连接?
任何想法,将不胜感激!