Android启动服务的两种方法

  • 第一种方法
  • 第二种方法

Android 5.0开始,只能使用显式Intent启动服务。其中,启动服务有2种方式,第一种是直接指定想要启动的服务;第二种是使用AIDL的方式。
代码中主活动名是MainActivity,服务名是MyService

第一种方法

这种方法和启动活动的方法比较相似,直接指定了想要启动的服务
MainActivity.java代码

package cn.edu.jssvc.crossprocesscommunication;
import androidx.appcompat.app.AppCompatActivity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {Intent intent = new Intent(MainActivity.this, MyService.class);@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);        startService(intent);}@Overrideprotected void onDestroy() {super.onDestroy();stopService(intent);}
}

MyService.java代码

package cn.edu.jssvc.crossprocesscommunication;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
public class MyService extends Service {public MyService() {}@Overridepublic void onCreate() {System.out.println("Myservice created");super.onCreate();}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {System.out.println("Myservice startCommand");return super.onStartCommand(intent, flags, startId);}@Overridepublic void onDestroy() {System.out.println("Myservice destroy");super.onDestroy();}@Overridepublic IBinder onBind(Intent intent) {// TODO: Return the communication channel to the service.throw new UnsupportedOperationException("Not yet implemented");}
}

第二种方法

使用Intent.setComponent(new ComponentName(para1,para2))
para1是服务所在的包名,para2是包名.服务名

MainActivity.java代码

package cn.edu.jssvc.crossprocesscommunication;
import androidx.appcompat.app.AppCompatActivity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;public class MainActivity extends AppCompatActivity {Intent intent = new Intent();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);intent.setComponent(new ComponentName("cn.edu.jssvc.crossprocesscommunication","cn.edu.jssvc.crossprocesscommunication.MyService"));startService(intent);}@Overrideprotected void onDestroy() {super.onDestroy();stopService(intent);}
}

MyService.java代码

package cn.edu.jssvc.crossprocesscommunication;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
public class MyService extends Service {public MyService() {}@Overridepublic void onCreate() {System.out.println("Myservice created");super.onCreate();}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {System.out.println("Myservice startCommand");return super.onStartCommand(intent, flags, startId);}@Overridepublic void onDestroy() {System.out.println("Myservice destroy");super.onDestroy();}@Overridepublic IBinder onBind(Intent intent) {// TODO: Return the communication channel to the service.throw new UnsupportedOperationException("Not yet implemented");}
}

第二种方法还可以用于跨进程通信

Android启动服务的两种方法相关推荐

  1. 打开和关闭mysql服务的两种方法

    方法一:使用cmd命令 首先,打开我们的dos窗口,开始-运行-输入cmd. 如上图所示,输入net start mysql 回车即可启动,输入net stop mysql 回车即可关闭. 方法二:选 ...

  2. linux系统下重启网络服务的两种方法

    linux系统下重启网络服务的两种方法 发布时间:2020-04-02 11:25:25 来源:亿速云 阅读:207 作者:小新 今天小编给大家分享的是linux系统下重启网络服务的两种方法,很多人都 ...

  3. Android 更新UI的两种方法——handler和runOnUiThread()

    Android 更新UI的两种方法--handler和runOnUiThread() 在Android开发过程中,常需要更新界面的UI.而更新UI是要主线程来更新的,即UI线程更新.如果在主线线程之外 ...

  4. Java运行非Web的Springboot项目(测试类或启动主类两种方法)

    Java运行非Web的Springboot项目(测试类或启动主类两种方法) 前言 一.创建打开一个Springboot项目 二.运行项目 1.Test测试类运行 2.启动主类运行 三.持续运行不停止( ...

  5. Linux开机启动程序的两种方法

    /usr/lib/systemd/system: 安装包相关配置,一般是供应商提供的操作系统资源.通常,只允许包管理工具(yum/dnf/rpm/apt)进行包安装的过程中操作此路径: /lib/sy ...

  6. android沉浸模式代码,Android沉浸式的两种方法

    隐藏状态栏 一个Android应用程序的界面上其实是有很多系统元素的,观察下图: 而打造沉浸式模式的用户体验,就是要将这些系统元素全部隐藏,只留下主体内容部分. 怎么做呢,郭霖的一个Function搞 ...

  7. Android启动Activity的两种方式与四种启动模式

    1.在一个Activity中调用startActivity()方法 2.在一个Activity中调用startActivityRequest()方法. 重写onActivityResult方法,用来接 ...

  8. android apk 签名方法,[转载]Android apk签名的两种方法

    为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版本的一致性(如自动 ...

  9. windows10启动/关闭MySQL服务的两种方法

    最近安装MySQL取消了开机自启动,需要手动开启,这里记录下开启方法: 1.命令方式 右击,注意是右击桌面左下角的开始菜单,在弹出的菜单中选择Windows PowerShell(管理员) 选择普通的 ...

最新文章

  1. dedecms织梦模板修改专题路径的方法
  2. 《C++入门经典(第6版)》——1.5 问与答
  3. jQuery Easing 动画效果扩展--使用Easing插件,让你的动画更具美感。
  4. 参观北京移动信息港森华易腾机房
  5. 485光隔离中继器产品特点及应用领域介绍
  6. linux挂载磁盘阵列
  7. C++类构造函数初始化列表及初始化成员变量的误区
  8. ajax发送数据时的contentType
  9. 【MATLAB】混合粒子群算法原理、代码及详解
  10. c++ 转bcd码_还不会看汽车自诊断系统的故障码?三分钟教你怎么解决
  11. 游戏开发中常用的设计模式
  12. mysql profile使用(转)
  13. H5 调用摄像头进行拍照
  14. 我爱你 php代码怎么打,微信翻译代码我爱你怎么写?微信翻译表白代码介绍大全...
  15. rwd是什么意思_为什么RWD看起来像RWD
  16. 只需三步!查看笔记本电脑连接的WiFi密码
  17. Cisco配置DHCP中继代理
  18. 【从零开始学深度学习编译器】十三,如何在MLIR里面写Pass?
  19. HTB-Blocky
  20. C++字符串的几种输入方法(string和字符数组)

热门文章

  1. 计算机基础无纸化考试题库,2018年无纸化考试专用 全国计算机等级考试真题汇编与专用题库 一级计算机基础及MS Offic...
  2. Java 用正则表达式判断输入的电话号码格式是否正确 | 工具类
  3. 织梦二次开发简单mvc例子
  4. 单反相机tf卡用sd卡套稳定吗_单反相机 储存卡百科 选择适合你的存储卡
  5. 六款开源java应用性能监控工具
  6. 微型计算机温度控制系统设计,微机原理及其应用微型计算机温度控制系统设计课程设计报告;...
  7. 在ARM335X的环境下实现NFS加载根文件系统
  8. 同一篇文章,发布到不同的自媒体平台,可以吗?
  9. iOS 快速开发电商平台
  10. 玻璃钢HS编码!实用性超强