我有一个Android应用程序,其中包含一个向用户显示信息的主要活动。 当主活动开始时,将创建一个服务,该服务每10秒检查一次Web服务 - 如果WS返回应答,则弹出通知。主要活动和服务之间没有任何联系(除了我希望它们一起开始)。问题是,激活工作真的很慢 - 因为服务正在运行。
我该如何解决?我尝试使用IntentService,但他在10秒后死亡。
我正在使用的代码:
@Override
public void onCreate() {
super.onCreate();
context = this.getApplicationContext();
mPeriodicEventHandler = new Handler();
mPeriodicEventHandler.postDelayed(doPeriodicTask, PERIODIC_EVENT_TIMEOUT);
}
private Runnable doPeriodicTask = new Runnable()
{
public void run()
{
NotificationServices.Notification();
mPeriodicEventHandler.postDelayed(doPeriodicTask, PERIODIC_EVENT_TIMEOUT);
}
};
答案 0 :(得分:0)
而不是轮询我建议您使用GCM,即c2dm,这是c2dm设计的场景......
供参考检查这些链接,你肯定会喜欢使用这个
答案 1 :(得分:0)
您的处理程序正在主UI线程中执行任务,这可能会影响您的活动的UI,甚至会导致ANR。
我建议创建一个新的HandlerThread并在那里发布你的任务。
但是,请确保您确实希望每10秒钟提取一次数据。移动互联网和设备耗电成本很高。
答案 2 :(得分:0)
使用Handler我们可以做到这一点
final Handler handler = new Handler();
Runnable r = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
handler.postDelayed(r, 10000);
}
};
handler.postDelayed(r, 0);
答案 3 :(得分:0)