【发布时间】:2010-12-16 09:32:36
【问题描述】:
我有一项服务可以联系服务器定期从我的应用程序传输一些数据。它工作正常。
但是当我重新启动(关闭和打开)我的手机时,该服务无法重新启动。所以我的想法是当用户在重启手机后打开我的应用程序时再次启动该服务。为此,我必须知道我的服务是否正在运行?怎么做?
任何其他处理这种情况的想法也很感激。
提前致谢。
【问题讨论】:
标签: android service android-service
我有一项服务可以联系服务器定期从我的应用程序传输一些数据。它工作正常。
但是当我重新启动(关闭和打开)我的手机时,该服务无法重新启动。所以我的想法是当用户在重启手机后打开我的应用程序时再次启动该服务。为此,我必须知道我的服务是否正在运行?怎么做?
任何其他处理这种情况的想法也很感激。
提前致谢。
【问题讨论】:
标签: android service android-service
您需要一个 BroadcastReceiver 的实现,它旨在用于 BOOT_COMPLETED 操作。像这样:
public class OnStartReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// your starting service code here
}
}
此外,您应该将receiver 标签添加到您的清单文件中,android:name = 您的 OnStartReceiver 的完全限定名称和嵌套在 BOOT_COMPLETED 作为意图名称的意图过滤器标签,如下所示:
<receiver android:name=".onStartReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
【讨论】:
创建一个BroadcastReceiver 来监听ACTION_BOOT_COMPLETED 事件。更多详情here.
【讨论】:
将AlarmManager 用于此类计划任务,因此您的服务不需要一直在内存中。正如里贝里先生所说,在手机重启后使用BroadcastReceiver 和ACTION_BOOT_COMPLETED 重新安排您的任务。
【讨论】: