2

我创建了一个地理定位应用程序,它收集设备的位置信息并将其与预定义的纬度/经度坐标进行比较,以便在它们匹配时执行某些操作。

目前我有一个活动页面,用户可以在其中输入坐标以及其他参数,例如轮询的半径和间隔。此外,应用程序仅在用户启动时启动。

我希望将其转换为执行以下操作的服务

  • 在后台运行
  • 参数是从配置文件中读取的(这部分已经完成),因此不需要任何主要活动(没有 UI)
  • 自动启动(可能需要一个 android.intent.action.BOOT_COMPLETED BroadcastReceiver)

我该怎么做呢?

谢谢。

4

1 回答 1

2

您必须为您的应用程序创建一个服务,如下所示:

示例服务.java:

public class ExampleService extends Service {

@Override
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    return null;
}



@Override
public void onStart(Intent intent, int startId) {
    // TODO Auto-generated method stub
    super.onStart(intent, startId);

    Log.d(TAG, "onStart()===>In");
   // Write your application logical code here

}

@Override
public void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
}

}

BootCompleteReceiver.java

public class BootCompleteReceiver extends BroadcastReceiver {

private static final String TAG = "[BootCompleteReceiver]";

@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    Toast.makeText(context, "Boot complete", Toast.LENGTH_LONG).show();
    Log.d(TAG, "Boot complete");
    // Start the ExampleService
    Intent service = new Intent(context, ExampleService.class);
    context.startService(service);
}

}

在 Android 清单中:

<!-- Server as a service -->
<service
android:name="com.example.ExampleService"
android:enabled="true" >
</service>

<!-- Boot complete receiver -->
<receiver
android:name="com.example.BootCompleteReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>

您还必须创建一个活动来手动启动服务并从活动中唤醒服务。

于 2015-08-25T05:08:39.533 回答