我是Android App Development的初学者。我正在尝试实施IntentService,以便在用户点击“启动服务”时在后台运行流程。主要活动中的按钮。这个过程很小,通常在点击按钮几秒后就完成了。但即使在应用程序关闭后,也必须定期运行该小进程。这是代码:
protected void onHandleIntent(Intent intent)
{
Log.i(TAG, "The service has now started");
//getting the source code of a html link
Log.i(TAG,"Task has been completed");
}
如果我在IntentService过程中保持Main Activity打开,我会在Log Cat中收到这两条消息。但是,如果我在按下“启动服务”后立即关闭应用程序。主要活动中的按钮,我只收到第一条消息,即'服务现已启动'。这是否意味着如果我关闭应用程序,该过程无法完成?为什么会这样?我该怎么做才能克服这个问题?
答案 0 :(得分:0)
根据IntentService docs,您的服务与应用程序主线程之间没有链接。
IntentService是处理异步的Services的基类 请求(表示为Intents)。客户端发送请求 通过startService(Intent)调用;该服务根据需要启动, 使用工作线程依次处理每个Intent,并自行停止 当它用完了。
此“工作队列处理器”模式通常用于卸载任务 来自应用程序的主线程。 IntentService类存在于 简化这种模式并处理机制。要使用它, 扩展IntentService并实现onHandleIntent(Intent)。 IntentService将接收Intents,启动一个工作线程,并且 酌情停止服务。
我认为你没有在LogCat中获取日志,因为应用程序已关闭。但是该服务没有您的应用程序标记就进行了记录。