我有一项服务可以联系服务器定期从我的应用程序进行一些数据传输。它工作正常。
但是当我重新启动(关闭和打开)我的手机时,该服务无法重新启动。所以我的想法是当用户在重启手机后打开我的应用程序时再次启动该服务。为此,我必须知道我的服务是否正在运行?怎么做?
处理这种情况的任何其他想法也很感激。
提前致谢。
我有一项服务可以联系服务器定期从我的应用程序进行一些数据传输。它工作正常。
但是当我重新启动(关闭和打开)我的手机时,该服务无法重新启动。所以我的想法是当用户在重启手机后打开我的应用程序时再次启动该服务。为此,我必须知道我的服务是否正在运行?怎么做?
处理这种情况的任何其他想法也很感激。
提前致谢。
你需要一个 的实现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
事件。更多细节在这里。
用于AlarmManager
这样的计划任务,因此您的服务不需要一直在内存中。正如里贝里先生所说,在手机重启后使用BroadcastReceiver
withACTION_BOOT_COMPLETED
重新安排您的任务。