在android中振动手机后停止服务?

在android中振动手机后停止服务?,android,service,Android,Service,我正在尝试学习android中的服务。我的目标是,我将向服务传递一个LatLng对象,然后服务将对此进行处理,当工作完成时,它将在手机上嗡嗡响一段时间并停止。最后,服务将完成。现在我有一些疑问: 我将从我的应用程序调用该服务,但用户可以关闭我的应用程序 服务未完成。服务是否将执行由我的应用或 它也将完成 我在这里学习的内容是,服务将继续执行,有一件事我不必向发起服务的活动返回任何内容。我已经编写了一些代码。有人能帮我吗 public class MapService extends Servic

我正在尝试学习android中的服务。我的目标是,我将向服务传递一个LatLng对象,然后服务将对此进行处理,当工作完成时,它将在手机上嗡嗡响一段时间并停止。最后,服务将完成。现在我有一些疑问:

我将从我的应用程序调用该服务,但用户可以关闭我的应用程序 服务未完成。服务是否将执行由我的应用或 它也将完成

我在这里学习的内容是,服务将继续执行,有一件事我不必向发起服务的活动返回任何内容。我已经编写了一些代码。有人能帮我吗

public class MapService extends Service {


    private boolean isRunning  = false;

    @Override
    public void onCreate() {
        Log.i(TAG, "Service onCreate");

        isRunning = true;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        Log.i(TAG, "Service onStartCommand");

        //Creating new thread for my service
        //Always write your long running tasks in a separate thread, to avoid ANR
        new Thread(new Runnable() {
            @Override
            public void run() {

                   //here i will do my work



                    if(isRunning){
                        Log.i(TAG, "Service running");
                    }
                }

                //Stop service once it finishes its task
                stopSelf();
            }
        }).start();

        return Service.START_STICKY;
    }


    @Override
    public IBinder onBind(Intent arg0) {
        Log.i(TAG, "Service onBind");
        return null;
    }

    @Override
    public void onDestroy() {

        isRunning = false;

        Log.i(TAG, "Service onDestroy");
    }
    }

如果用户关闭应用程序,它会工作吗?

是,即使用户关闭应用程序,此服务也会运行。如果android系统要求内存,也可能会停止服务,但它会重新启动
由于您已在Android KitKat及以上版本(4.4+)上的onStartCommand

中设置了标志START\u STICKY,因此,如果用户刷卡导致应用程序死机,且系统不会重新启动该应用程序,则服务将停止。请参阅此讨论()。如果应用程序被Android系统本身停止(资源不足),服务将在一段时间后重新启动(使用
START\u STICKY
标志)

在Android 4.3及以下版本上,无论应用程序是由系统还是用户停止,服务都将重新启动(使用
START\u
标志)

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    // We want this service to continue running until it is explicitly stopped, so return sticky.
    return START_STICKY;
}