android 服务器排队,java – 如何在android上排队数据以进行服务器调度

首先你需要设置一个接收器来观看wifi连接以查看它们何时有数据,你还可以检查正常的3g / 4g连接,并为此制作一个广播接收器. todo这个让用一个广播接收器来进行连接状态的改变.把这样的东西放在应用程序标签的清单中

现在我们需要制作清单中定义的接收器

public class NetworkChangeReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

//here, check that the network connection is available. If yes, start your email service. If not, stop your email service.

ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo info = cm.getActiveNetworkInfo();

if (info != null) {

if (info.isConnected()) {

//start service

Intent intent = new Intent(this, ItemServiceManager.class);

startService(intent);

}

else {

//stop service

Intent intent = new Intent(this, ItemServiceManager.class);

stopService(intent);

}

}

}

}

这样做是在android领域放置一个名为NetworkChangeReceiver的大胖天线,当android有关于数据连接状态的变化的话时,可以很好地监听.

现在你需要构建你应该从数据库读取的ItemServiceManager.class(它也应该扩展Service.它应该选择数据库中最旧的项目,(通过电子邮件发送,发送文本,上传到服务器,等等),如果连接成功然后从数据库中删除该项目,并加载下一个最旧的项目.如果没有更多,然后关闭服务和广播接收器.

如果您有连接并且用户需要发送更多数据,则将其添加到数据库,然后确保服务已启动.也许通知它它应该仔细检查数据库(几秒钟后),然后决定它可以关闭,因为没有任何东西.

这是您可以禁用广播接收器的方法.

PackageManager packageManager = context.getPackageManager();

ComponentName componentName = new ComponentName(context, NetworkChangeReceiver.class);

packageManager.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

当要上传新项目时,如果没有网络连接,则应将电子邮件保存到数据库,并且应该开始广播接收器以了解互联网何时返回,以便知道何时上传.你可以像这样启动它.

PackageManager packageManager = context.getPackageManager();

ComponentName componentName = new ComponentName(context, NetworkChangeReceiver.class);

packageManager.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_ENABLED,PackageManager.DONT_KILL_APP);

重点是,当您存储要上传的内容但由于没有数据连接而无法上传时,您只关心连接广播.当您无需上传任何内容时,请不要通过保持接收器/服务来浪费处理和电池.当你有电子邮件等待时,然后启动你的broadcastreceiver,知道什么时候有数据连接,以便你可以开始上传.

我认为没有人会为你写一个完整的解决方案,希望这足以让你顺利上路.

编辑:

您可以做的另一件事是让服务器允许接受您的项目数组,这样您就可以在获得有效连接时立即上传所有项目.一般来说,如果每个项目都相当小,你会这样做.但是如果你要上传图片或视频或任何大的,最好一次一个.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值