我正在创建一个使用服务组件的服务,我想始终在后台运行应用程序。假设我关闭了手机,当我打开手机时,我们的应用程序会自动关闭。
我正在尝试这个代码
androidManifest.xml
<receiver android:name=".receiver.ConnectionReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
并在BroadCastreceiver类中添加此代码更新
private class ConnectionReceiver extends BroadcastReceiver{
private Timer mTimer;
private TimerTask mTimerTask;
private long interval;
@Override
public void onReceive(Context context, Intent intent) {
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, ConnectionReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT);
am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + interval, interval, pi);
{
calGps();
}
}
嗨Leema Rose
您希望在设备启动后启动您的服务/活动。查看以下链接,您将了解如何使用BroadcastReceiver。
在启动时自动启动应用程序
启动时启动服务
我希望它能帮助你。
新答案:
在接收方清单文件的意向过滤器中添加<category android:name="android.intent.category.HOME" />
。
您必须添加一个清单权限条目:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
(当然,你应该列出你的应用程序使用的所有其他权限)。
然后,实现BroadcastReceiver类,它应该是简单快速的可执行程序。最好的方法是在这个接收器中设置一个闹钟来唤醒你的服务(如果没有必要像Prahast所写的那样一直保持它的运行)。
public class BootUpReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, MyService.class), PendingIntent.FLAG_UPDATE_CURRENT);
am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + interval, interval, pi);
}}
然后,将Receiver类添加到清单文件中:
<receiver android:enabled="true" android:name=".receivers.BootUpReceiver"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>