参数都是对的为什么app进行任务推送激光推送定时任务不能实现

拒绝访问 | www.shuotupu.com | 百度云加速
请打开cookies.
此网站 (www.shuotupu.com) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(d64376-ua98).
重新安装浏览器,或使用别的浏览器我只是android爱好者,资源共享,希望大家一起交流,群名称:玩android不是梦
Android之百度云推送(三)如何启动服务端的定时任务
Android之百度云推送(三)如何启动服务端的定时任务
apk和服务端都好了,怎么能定时启动服务呢?
查看了好多资料:
spring task定时器的运用
定时任务实现Timer, TimeTask, ScheduledExecutorService及Spring定时器
无耐公司spring版本是2.5的不支持
@Scheduled(cron="0/5 * *
升级spring试试,原先的项目报错,不值当的改,改动太大了
一共这么几种定时任务,都不行,怎么办
还是自己玩吧,我选择的是线程,
第一步写个类启动一个线程,并且希望这个类随web服务器启动而启动
PushJob.java
@Component("PushJob")
public class PushJob
extends HttpServlet {
private static final long serialVersionUID = 1L;
public void init() throws ServletException {
System.out.println("开始 pushjob init .....");
super.init();
PushMsg p = new PushMsg();
Thread t = new Thread(p);
t.start();
System.out.println("完成 pushjob init .....");
web.xml进行相应的配置随web服务器启动而启动
com.ailk.app.push.servlet.PushJob
第二步修改AndroidPushBatchUniMsg.java为PushMsg.java
听着很奇怪是吧?看我的
public class PushMsg implements Runnable{
public void run() {
System.out.println("PushMsg running....");
while(true){
Thread.sleep(60000);
} catch (InterruptedException e) {
e.printStackTrace();
private void doone(){
String apiKey = "WnK9iAqGORSyWC";
String secretKey = "MTVkTFfdsaf443Rgb29hF8d";
PushKeyPair pair = new PushKeyPair(apiKey, secretKey);
BaiduPushClient pushClient = new BaiduPushClient(pair,
BaiduPushConstants.CHANNEL_REST_URL);
pushClient.setChannelLogHandler(new YunLogHandler() {
public void onHandle(YunLogEvent event) {
System.out.println(event.getMessage());
System.out.println("开始了吗");
PushBean pb = new PushBean();
List&PushInfo& pushList=pb.queryPushList(ac);
System.out.println("有信息吗?"+pushList.size());
if(pushList.size() & 0){
for (PushInfo pushBean : pushList)
JSONObject notification = new JSONObject();
notification.put("title", pushBean.getTitle());
notification.put("description",pushBean.getDescs());
notification.put("notification_builder_id", 0);
notification.put("notification_basic_style", 4);
notification.put("open_type", 3);
JSONObject jsonCustormCont = new JSONObject();
notification.put("custom_content", jsonCustormCont);
String[] channelIds = { "6267390" };
PushBatchUniMsgRequest request = new PushBatchUniMsgRequest()
.addChannelIds(channelIds)
.addMsgExpires(new Integer(3600))
.addMessageType(1)
.addMessage(notification.toString())
.addDeviceType(3)
.addTopicId(pushBean.getTopicId());
PushBatchUniMsgResponse response = pushClient.pushBatchUniMsg(request);
System.out.println(String.format("msgId: %s, sendTime: %d",response.getMsgId(), response.getSendTime()));
} catch (PushClientException e) {
if (BaiduPushConstants.ERROROPTTYPE) {
} catch (PushClientException e1) {
e1.printStackTrace();
e.printStackTrace();
} catch (PushServerException e) {
if (BaiduPushConstants.ERROROPTTYPE) {
} catch (PushServerException e1) {
e1.printStackTrace();
System.out.println(String.format(
"requestId: %d, errorCode: %d, errorMessage: %s",
e.getRequestId(), e.getErrorCode(), e.getErrorMsg()));
} catch (Exception e) {
e.printStackTrace();
我想你应该看出来了,其他的都没动,就是你怎么去数据库拿数据了吧。。不懂得可以加群玩android不是梦 咱们商讨一下
百度云推送-----10101错误
百度云推送、极光推送等云推送服务搜罗点评
没有更多推荐了,看了极光推送技术原理的几点思考
移动互联网应用现状
因为手机平台本身、电量、网络流量的限制,移动互联网应用在设计上跟传统 PC 上的应用很大不一样,需要根据手机本身的特点,尽量的节省电量和流量,同时又要尽可能的保证数据能及时到达客户端。
为了解决数据同步的问题,在手机平台上,常用的方法有2种。一种是定时去服务器上查询数据,也叫Polling,还有一种手机跟服务器之间维护一个 TCP 长连接,当服务器有数据时,实时推送到客户端,也就是我们说的 Push。
从耗费的电量、流量和数据送达的及时性来说,Push 都会有明显的优势,但 Push 的实现和维护成本相对较高。在移动无线网络下维护长连接,相对也有一些技术上的难度。本文试图给大家介绍一下我们在 Android 平台上是如何维护长连接。
移动无线网络的特点
因为 IP v4 的 IP 量有限,运营商分配给手机终端的 IP 是运营商内网的 IP,手机要连接 Internet,就需要通过运营商的网关做一个网络地址转换(Network Address Translation,NAT)。简单的说运营商的网关需要维护一个外网 IP、端口到内网 IP、端口的对应关系,以确保内网的手机可以跟 Internet 的服务器通讯。
图片源自 cisco.com.
NAT 功能由图中的 GGSN 模块实现。
大部分移动无线网络运营商都在链路一段时间没有数据通讯时,会淘汰 NAT 表中的对应项,造成链路中断。
Android 平台上长连接的实现
为了不让 NAT 表失效,我们需要定时的发心跳,以刷新 NAT 表项,避免被淘汰。
Android 上定时运行任务常用的方法有2种,一种方法用 Timer,另一种是AlarmManager。
Android 的 Timer 类可以用来计划需要循环执行的任务,Timer 的问题是它需要用 WakeLock 让 CPU 保持唤醒状态,这样会大量消耗手机电量,大大减短手机待机时间。这种方式不能满足我们的需求。
AlarmManager
AlarmManager 是 Android 系统封装的用于管理 RTC 的模块,RTC (Real Time Clock) 是一个独立的硬件时钟,可以在 CPU 休眠时正常运行,在预设的时间到达时,通过中断唤醒 CPU。
这意味着,如果我们用 AlarmManager 来定时执行任务,CPU 可以正常的休眠,只有在需要运行任务时醒来一段很短的时间。极光推送的 Android SDK 就是基于这种技术实现的。
服务器设计
当有大量的手机终端需要与服务器维持长连接时,对服务器的设计会是一个很大的挑战。
假设一台服务器维护10万个长连接,当有1000万用户量时,需要有多达100台的服务器来维护这些用户的长连接,这里还不算用于做备份的服务器,这将会是一个巨大的成本问题。那就需要我们尽可能提高单台服务器接入用户的量,也就是业界已经讨论很久了的 C10K 问题。
针对这个问题,我们专门成立了一个项目,命名为C2000K,顾名思义,我们的目标是单机维持200万个长连接。最终我们采用了多消息循环、异步非阻塞的模型,在一台双核、24G内存的服务器上,实现峰值维持超过300万个长连接。
稳定维护长连接是推送平台的一个基础,将会在这方面长期投入,以保证用户能有效的节省电量、流量,同时数据能实时送达。
以上是极光推送官方的文章,但是看了之后不免有几个疑问。
1)他们号称最高峰值可以达到300W的长连接,但是活跃链接的处理最高是多少呢?
2)消息的平均长度和限制各是多少?
3)消息的及时性怎么样,延时是多少?
4)不知道现在,极光推送的用户大概有多少,所以这个峰值是在生产环境,还是测试环境的数值?
5)我想不通的是为什么,客户端要用AlarmManager来做推送消息的获取?这个消息获取还及时吗?鄙人结识android也有N载。
6)我感兴趣的是,不是极光方案一个月推送了几百万条数据,而是几秒钟或者一分钟可以处理多少。
极光推送实现精确对点推送机制
JPush极光推送详解
个推和极光推送技术介绍
推送-极光推送
从极光推送的实现原理概括iOS和Andriod推送原理
【Android应用开发】 推送原理解析 极光推送使用详解 (零基础精通推送)
JPush极光推送的原理与简单demo的实现会遇到的问题
JPush极光推送的原理
极光推送技术原理:移动无线网络长连接
没有更多推荐了,Hi! 新朋友Android集成极光推送问题记录
1.[JCoreGlobal] Get sdk version fail![获取sdk版本失败!]
原因:.so文件未正确加载
解决办法:将以下需要的jar文件和so文件放在项目中的libs文件夹下
然后在gradle中如下配置:
2.同时引入极光和百度的so文件时报错
com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache
解决办法:将极光v7文件夹下的so文件删掉,估计是这个包和百度地图的冲突了。
没有更多推荐了,

我要回帖

更多关于 定时任务推送 的文章

 

随机推荐