Android启动服务的两种方法
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启动服务的两种方法相关推荐
- 打开和关闭mysql服务的两种方法
方法一:使用cmd命令 首先,打开我们的dos窗口,开始-运行-输入cmd. 如上图所示,输入net start mysql 回车即可启动,输入net stop mysql 回车即可关闭. 方法二:选 ...
- linux系统下重启网络服务的两种方法
linux系统下重启网络服务的两种方法 发布时间:2020-04-02 11:25:25 来源:亿速云 阅读:207 作者:小新 今天小编给大家分享的是linux系统下重启网络服务的两种方法,很多人都 ...
- Android 更新UI的两种方法——handler和runOnUiThread()
Android 更新UI的两种方法--handler和runOnUiThread() 在Android开发过程中,常需要更新界面的UI.而更新UI是要主线程来更新的,即UI线程更新.如果在主线线程之外 ...
- Java运行非Web的Springboot项目(测试类或启动主类两种方法)
Java运行非Web的Springboot项目(测试类或启动主类两种方法) 前言 一.创建打开一个Springboot项目 二.运行项目 1.Test测试类运行 2.启动主类运行 三.持续运行不停止( ...
- Linux开机启动程序的两种方法
/usr/lib/systemd/system: 安装包相关配置,一般是供应商提供的操作系统资源.通常,只允许包管理工具(yum/dnf/rpm/apt)进行包安装的过程中操作此路径: /lib/sy ...
- android沉浸模式代码,Android沉浸式的两种方法
隐藏状态栏 一个Android应用程序的界面上其实是有很多系统元素的,观察下图: 而打造沉浸式模式的用户体验,就是要将这些系统元素全部隐藏,只留下主体内容部分. 怎么做呢,郭霖的一个Function搞 ...
- Android启动Activity的两种方式与四种启动模式
1.在一个Activity中调用startActivity()方法 2.在一个Activity中调用startActivityRequest()方法. 重写onActivityResult方法,用来接 ...
- android apk 签名方法,[转载]Android apk签名的两种方法
为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版本的一致性(如自动 ...
- windows10启动/关闭MySQL服务的两种方法
最近安装MySQL取消了开机自启动,需要手动开启,这里记录下开启方法: 1.命令方式 右击,注意是右击桌面左下角的开始菜单,在弹出的菜单中选择Windows PowerShell(管理员) 选择普通的 ...
最新文章
- dedecms织梦模板修改专题路径的方法
- 《C++入门经典(第6版)》——1.5 问与答
- jQuery Easing 动画效果扩展--使用Easing插件,让你的动画更具美感。
- 参观北京移动信息港森华易腾机房
- 485光隔离中继器产品特点及应用领域介绍
- linux挂载磁盘阵列
- C++类构造函数初始化列表及初始化成员变量的误区
- ajax发送数据时的contentType
- 【MATLAB】混合粒子群算法原理、代码及详解
- c++ 转bcd码_还不会看汽车自诊断系统的故障码?三分钟教你怎么解决
- 游戏开发中常用的设计模式
- mysql profile使用(转)
- H5 调用摄像头进行拍照
- 我爱你 php代码怎么打,微信翻译代码我爱你怎么写?微信翻译表白代码介绍大全...
- rwd是什么意思_为什么RWD看起来像RWD
- 只需三步!查看笔记本电脑连接的WiFi密码
- Cisco配置DHCP中继代理
- 【从零开始学深度学习编译器】十三,如何在MLIR里面写Pass?
- HTB-Blocky
- C++字符串的几种输入方法(string和字符数组)
热门文章
- 计算机基础无纸化考试题库,2018年无纸化考试专用 全国计算机等级考试真题汇编与专用题库 一级计算机基础及MS Offic...
- Java 用正则表达式判断输入的电话号码格式是否正确 | 工具类
- 织梦二次开发简单mvc例子
- 单反相机tf卡用sd卡套稳定吗_单反相机 储存卡百科 选择适合你的存储卡
- 六款开源java应用性能监控工具
- 微型计算机温度控制系统设计,微机原理及其应用微型计算机温度控制系统设计课程设计报告;...
- 在ARM335X的环境下实现NFS加载根文件系统
- 同一篇文章,发布到不同的自媒体平台,可以吗?
- iOS 快速开发电商平台
- 玻璃钢HS编码!实用性超强