2011-03-24 64 views
3

我有一个关于服务的问题:什么会更好,在服务中创建线程,还是线程中的服务?服务中的线程或线程内的服务?

问题出现是因为我为我的应用程序实现了一个错误记者,所以当应用程序失败时,它会向我发送一个发生了什么事情的报告。我的想法是当这里出现错误时显示活动活动并创建一个线程来重试传递,直到它成功或达到最小尝试次数为止的通知。

重新提出这个问题,系统最不可能移除我的进程(如果内存不足):服务中的线程或线程中的服务?

我认为最好的是第一选择,但我看到了一个代码在同一个Android的人,在这里:

(线640) code from google to keep alive a thread??

如果他们使用的第二位。你怎么看待这件事?

我不需要一个AsyncTask,因为我不需要与UI线程进行交互,在这一点上我不会向用户显示任何内容。

+0

您能否重新配置零件“当我从这里出现错误时,我的想法是通知显示活动活动并创建一个线程以重试交付,直到它成功或达到最少次数的尝试。”?你有一个叫做“活动”的活动?它创建线程重试? – 2011-03-24 17:08:24

+0

当然,我的想法是发送一个通知给用户,当他/她点击它时,用两个按钮(发送和取消)显示一个活动。如果用户点击“发送”,现在我开始尝试发送errordata到服务器的线程,如果发生失败,睡眠30分钟并重试,最多6次重试 – user675319 2011-03-25 17:20:36

+0

你说你不需要一个AsyncTask因为那时你并没有向用户展示任何东西。所以我想这是一个不会冻结GUI的后台任务,对吧?只是确认.. – 2011-03-29 13:15:03

回答

5

在服务中创建你的工作线程。

+0

你给出了答案..但是有什么优势吗? – 2011-03-29 13:15:59

+0

您通常会在活动的生命周期之外创建一项服务来执行后台工作。所以优点是服务不受绑定到活动生命周期的影响,并且它的执行可以跨越多个活动。 – 2011-03-29 15:26:29

+0

谢谢大家,我通过创建一个创建通知的服务来解决它,并且这个通知生成一个启动线程的活动(当单击时)。我发现这是最稳定的组合,有点尴尬,但工作正常,这是我想要的! 再次感谢和问候! – user675319 2011-03-29 18:48:28