如何在用户设备上线时发送我的数据
How to send my data when the user device come online
我有一个 android 应用程序,它有一些来自用户步数的数据,我想在用户设备上线时发送用户步数以切断,即使用户不在我的应用程序中也是如此。
解决这个问题的最佳方法是什么?
在我看来,解决方案应该如下所示:
创建接收器以获取连接变化的广播。这应该是这样的
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
if(checkInternet(context))
{
Log.d("InternetLog", "Network Available Do operations",Toast.LENGTH_LONG);
//Do your background task here
}
}
boolean checkInternet(Context context) {
ServiceManager serviceManager = new ServiceManager(context);
if (serviceManager.isNetworkAvailable()) {
return true;
} else {
return false;
}
}
}
一定要在manifest里注册
<receiver android:name=".NetworkChangeReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />.
</intent-filter>
</receiver>
- 完成此操作后,您的应用程序就可以在连接更改时唤醒。
- 我建议使用一些后台任务来使用数据到服务器,你应该看看services component or work manager
- 根据您选择的方式,只需在您的接收器中实现后端连接逻辑并启动后台任务,只需将注释替换为适当的代码
更新
作为替代方案,您可以使用此方法代替 ServiceManager
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
您还需要在您的 Manifest
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
我有一个 android 应用程序,它有一些来自用户步数的数据,我想在用户设备上线时发送用户步数以切断,即使用户不在我的应用程序中也是如此。 解决这个问题的最佳方法是什么?
在我看来,解决方案应该如下所示:
创建接收器以获取连接变化的广播。这应该是这样的
public class NetworkChangeReceiver extends BroadcastReceiver { @Override public void onReceive(final Context context, final Intent intent) { if(checkInternet(context)) { Log.d("InternetLog", "Network Available Do operations",Toast.LENGTH_LONG); //Do your background task here } } boolean checkInternet(Context context) { ServiceManager serviceManager = new ServiceManager(context); if (serviceManager.isNetworkAvailable()) { return true; } else { return false; } }
}
一定要在manifest里注册
<receiver android:name=".NetworkChangeReceiver"> <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />. </intent-filter> </receiver>
- 完成此操作后,您的应用程序就可以在连接更改时唤醒。
- 我建议使用一些后台任务来使用数据到服务器,你应该看看services component or work manager
- 根据您选择的方式,只需在您的接收器中实现后端连接逻辑并启动后台任务,只需将注释替换为适当的代码
更新
作为替代方案,您可以使用此方法代替 ServiceManager
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
您还需要在您的 Manifest
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />