本地Service

通过在content(如activity)中调用startService(Intent )启动service,service只有在调用stopSelf(),或者另外component调用stopService()时才会停止。

网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、成都微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了思南免费建站欢迎大家使用!

service启动时会自动调用

onStartCommand(Intent intent, int flags, int startId)

Service类:

This is the base class for all services. When you extend this class, it's important that you create a new thread in which to do all the service's work, because the service uses your application's main thread, by default, which could slow the performance of any activity your application is running

IntentService类:

This is a subclass of Service that uses a worker thread to handle all start requests, one at a time. This is the best option if you don't require that your service handle multiple requests simultaneously. All you need to do is implement onHandleIntent(), which receives the intent for each start request so you can do the background work.

IntentService类做如下工作:

  • Creates a default worker thread that executes all intents delivered to onStartCommand() separate from your application's main thread.

  • Creates a work queue that passes one intent at a time to your onHandleIntent() implementation, so you never have to worry about multi-threading.

  • Stops the service after all start requests have been handled, so you never have to call stopSelf().

  • Provides default implementation of onBind() that returns null.

  • Provides a default implementation of onStartCommand() that sends the intent to the work queue and then to your onHandleIntent() implementation

所以,只需实现onHandleIntent()函数,和构造函数,不比考虑多线程的问题

public class HelloIntentService extends IntentService {
  /**
   * A constructor is required, and must call the super IntentService(String)
   * constructor with a name for the worker thread.
   */
  public HelloIntentService() {
      super("HelloIntentService");
  }
  /**
   * The IntentService calls this method from the default worker thread with
   * the intent that started the service. When this method returns, IntentService
   * stops the service, as appropriate.
   */
  @Override
  protected void onHandleIntent(Intent intent) {
      // Normally we would do some work here, like download a file.
      // For our sample, we just sleep for 5 seconds.
      long endTime = System.currentTimeMillis() + 5*1000;
      while (System.currentTimeMillis() < endTime) {
          synchronized (this) {
              try {
                  wait(endTime - System.currentTimeMillis());
              } catch (Exception e) {
              }
          }
      }
  }
}

当重载其他回调函数时,记住super

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
    return super.onStartCommand(intent,flags,startId);
}

本文标题:本地Service
网址分享:http://bzwzjz.com/article/ihcopi.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站设计 成都网站制作 重庆电商网站建设 网站建设公司 网站设计 营销型网站建设 成都企业网站制作 成都网站设计 响应式网站建设 定制网站设计 成都网站建设流程 定制网站建设 网站制作 成都企业网站建设公司 成都网站制作 网站建设开发 古蔺网站建设 移动网站建设 成都网站建设公司 手机网站制作 定制级高端网站建设 上市集团网站建设