有 broadcastReceiver 接收启动消息并设置警报管理器。
它每延迟分钟启动一个服务:
Intent intent = new Intent();
intent.setAction("org.jxdwinter.getMessageServcie");
PendingIntent pendingintent = PendingIntent.getService(arg0, 0, intent, 0);
am = (AlarmManager) arg0.getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), DELAY, pendingintent);
该服务在新线程中从 romate 服务器轮询数据:
public int onStartCommand(Intent intent, int flags, int startId)
{
this.getMessage.start();
return Service.START_NOT_STICKY;
}
private class GetMessage extends Thread
{
public void run()
{
... ....
}
}
当应用程序启动时,我可以在第一时间获取数据,但没有错误。
然后服务在 DELAY 分钟再次启动,出现错误:线程已启动。
为什么会这样?请帮我解决这个问题。谢谢!
也许您可以在每次需要运行时创建一个线程的新实例:
public int onStartCommand(Intent intent, int flags, int startId)
{
new GetMessage().start();
return Service.START_NOT_STICKY;
}
你正在使用的 GetMesdsage 类的实例是静态的吗?如果是,请不要这样做 - 初始化新的