将一些服务代码与mysql结合使用

时间:2014-04-06 23:56:24

标签: android android-service

我的目标是通过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代码中的概念时遇到了问题,因为它适用于我上面描述的需求

请尝试帮助解决我的问题。

谢谢

2 个答案:

答案 0 :(得分:0)

在启动时启动教程中,您只需从BroadcastReceiver启动服务即可。该服务可以是您自己编写的代码,也可以使用同步适配器框架。听起来像同步适配器会对你的需求有所帮助,尽管我从未使用它。

答案 1 :(得分:0)

到目前为止,我设法编写了一个服务应用程序(我认为这就是它的调用方式)。该应用程序使用AlarmManager来安排对php web服务的调用。我还实现了执行调用的AsyncTask。所以现在,我的应用/服务工作。我仍然不相信这是一个很好的方法,我没有收到任何关于如何使syncAdapter适应我的需求的代码或想法。所以我可能会按照自己的方式行事,除非我能更完整地回答我的问题。