Android服务的新线程错误:线程已经启动

时间:2012-11-12 08:24:15

标签: android service

有broadcastReceiver接收启动消息并设置一个告警管理器。

每隔DELAY开始一次服务:

 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分钟中再次启动,出现错误:线程已经启动。

为什么会这样?请帮我解决这个问题。谢谢!

2 个答案:

答案 0 :(得分:1)

也许你每次需要运行时都可以创建一个新的线程实例:

public int onStartCommand(Intent intent, int flags, int startId)
{
    new GetMessage().start();
    return Service.START_NOT_STICKY;
}

答案 1 :(得分:0)

您正在使用静态的GetMesdsage类的实例吗?如果是,请不要这样做 - 初始化新的