0

我正在创建一个使用服务组件的服务,我想始终在后台运行应用程序。假设我关闭手机,当我在手机上时,我们的应用程序自动关闭。

我正在尝试这段代码

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();
                }
                }
4

2 回答 2

0

您必须添加清单权限条目:

<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>
于 2012-01-19T05:06:51.570 回答
0

,李玛玫瑰

您想在设备启动后启动您的服务/活动。检查以下链接,您将了解如何使用 BroadcastReceiver。

启动时自动启动应用程序

在启动时启动服务

我希望它可以帮助你。

新答案:

添加<category android:name="android.intent.category.HOME" />接收者清单文件的意图过滤器。

于 2012-01-19T05:11:46.393 回答