如何在用户设备上线时发送我的数据

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" />