我的目标是通过PHP连接到远程mySQL数据库发出请求,查看是否有新消息可用,如果答案是肯定的,则向设备发送通知以显示它。应该有一个这样的工作示例,因为它是任何处理更新和/或消息传递的严肃应用程序的基础。 所以我的PHP看起来像这样:
<?php
$con=mysql_connect("localhost","username","password");
if(!$con)
die('could not connect: ' .mysql_error());
mysql_select_db("mydatabasename",$con);
$result = mysql_query("select count(*) from (select * from notificari n, notificari_destinatii d where n.dest_notif_id=d.id_master) as tbl
where id_user=247 and date(data_notif)=date(now())");
while($row=mysql_fetch_assoc($result)){
$output[]=$row;
}
print(json_encode($output));
mysql_close($con);
?>
所以这个php告诉我今天用户247收到的通知数量。我想在我的服务中获取此数字,并将其与本地(SQLite数据库表)通知数量进行比较。如果远程号码大于本地号码,我想在设备上显示一条通知:“你有一条新消息在等待”,然后增加本地号码,以便下次服务要求PHP,远程号码和本地号码将相等,因此不会通知任何通知。
此操作必须每10分钟完成一次。 这可以在服务中完成吗? (异步调用php,SQLite select语句,通知创建)?
我怎样才能做到这一点?起初我想到了一个服务并且去了here这就是我如何进行服务周期,所以每隔xx分钟我就可以开始一个动作。但是,我在哪里实现此服务教程中的PHP调用?
我如何更改代码以添加在Android BOOT上自动启动服务的功能(代码为here),因此用户不能有他没有收到消息的借口,因为他今天没有启动应用程序。
那么如何将两个教程合并为一个?
然后我偶然发现this example使用了syncAdapters,现在我很困惑,因为我不明白我怎么能将这个应用到我的案例中?什么是最好的方法?服务一个还是syncAdapter一个? 另外,我在解析syncAdapter代码中的概念时遇到了问题,因为它适用于我上面描述的需求
请尝试帮助解决我的问题。
谢谢
答案 0 :(得分:0)
在启动时启动教程中,您只需从BroadcastReceiver启动服务即可。该服务可以是您自己编写的代码,也可以使用同步适配器框架。听起来像同步适配器会对你的需求有所帮助,尽管我从未使用它。
答案 1 :(得分:0)
到目前为止,我设法编写了一个服务应用程序(我认为这就是它的调用方式)。该应用程序使用AlarmManager来安排对php web服务的调用。我还实现了执行调用的AsyncTask。所以现在,我的应用/服务工作。我仍然不相信这是一个很好的方法,我没有收到任何关于如何使syncAdapter适应我的需求的代码或想法。所以我可能会按照自己的方式行事,除非我能更完整地回答我的问题。