服务是在后台运行 可以理解成是没有界面的activity
  定义四大组件的方式都是一样的  
  定义一个类继承Service
 
  start方式开启服务的特点
  特点:
  (1)服务通过startservice方式开启 第一次点击按钮开启服务 会执行服务的onCreate 和 onStart方法
  (2)如果第二次开始在点击按钮开启服务 服务之后执行onStrat方法
  (3)服务被开启后 会在设置页面里面的 running里面找得到这个服务 
  ***(4)startservice 方式开启服务 服务就会在后台长期运行 直到用户手工停止 或者调用StopService方法 服务才会被销毁
 
 bindService 方式开启服务的特点
 (1)当点击按钮第一次开启服务 会执行服务的onCreate方法 和 onBind()方法
 (2) 当我第二次点击按钮在调用bindservice  服务没有响应 
 **(3) 当activity销毁的时候服务也销毁  不求同时生但求同时死 
 (4)通过bind方式开启服务  服务不能再设置页面里面找到  相当于是一个隐形的服务
 (5)bindservice不能多次解绑 多次解绑会报错
 
为什么要引入bindService
目的为了调用服务里面的方法
 
/**
* 定义服务 需要在清单文件里面配置
* @author
*
*/
public class FirstService extends Service { @Override
public IBinder onBind(Intent intent) { System.out.println("onBind");
return null;
} //当服务第一次被开启的时候调用
@Override
public void onCreate() {
System.out.println("onCreate");
super.onCreate();
} @Override
public int onStartCommand(Intent intent, int flags, int startId) {
System.out.println("onStartCommand");
return super.onStartCommand(intent, flags, startId);
} //服务销毁的时候执行
@Override
public void onDestroy() {
System.out.println("onDestroy");
super.onDestroy();
} }
/**
* activity 你大爷 是 服务
*
* @author
*
*/
public class MainActivity extends Activity { private MyConn conn; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); } // 点击按钮开启服务
public void click1(View v) { Intent intent = new Intent(this, FirstService.class);
// 开启服务
startService(intent); } // 点击按钮停止服务
public void click2(View v) {
Intent intent = new Intent(this, FirstService.class);
stopService(intent);
} // 点击按钮通过 bindservice 方式去开启服务
public void click3(View v) {
Intent intent = new Intent(this,FirstService.class); //连接到服务FirstService conn = new MyConn();
System.out.println("bind----"+conn);
bindService(intent,conn, BIND_AUTO_CREATE); } //点击按钮 取消绑定服务
public void click4(View v) {
System.out.println("unbind----"+conn);
unbindService(conn);
} //当activity销毁的时候调用
@Override
protected void onDestroy() {
//当activity销毁的时候 取消绑定服务
unbindService(conn); super.onDestroy();
} //用来监听服务的状态
private class MyConn implements ServiceConnection{ //连接成功后调用
@Override
public void onServiceConnected(ComponentName name, IBinder service) { } //失去连接调用
@Override
public void onServiceDisconnected(ComponentName name) { } } }

AndroidManifest.xml

        <!--配置服务   -->

        <service android:name="com.itheima.service.FirstService">
</service>

最新文章

  1. 未能加载文件或程序集“System.Data.SQLite”或它的一个依赖。试图加载格式不正确的程序
  2. HTML 表格垂直对齐方式
  3. SqlServer查看各个表所占空间大小的sql
  4. hdu-4810 Wall Painting(组合数学)
  5. android 后台代码设置动画
  6. Python中的两种列表
  7. UVA 1001 Say Cheese 奶酪里的老鼠(最短路,floyd)
  8. 方差分析(ANOVA)(转)
  9. CSS基础(01)
  10. c++ :OOP之静态类型与动态类型
  11. postgreSQL远程连接出现:Error connecting to server :致命错误 SSL关闭的pg_hba.conf记录
  12. Codeforces Round #263
  13. 名叫Florida的女孩问题
  14. @synthesize和@dynamic
  15. Tcl与Design Compiler (八)——DC的逻辑综合与优化
  16. 【恢复】 Redo文件丢失的恢复
  17. 用户体验 | 寻找成套的 App SDK 服务
  18. Hibernate入门(十一)多对多案例
  19. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第5章编程练习2
  20. H5新特性之canvas

热门文章

  1. 编写Java程序_银行终端服务系统
  2. Hive on Spark和Spark sql on Hive,你能分的清楚么
  3. Kafka集群安装Version2.10
  4. Unity——ShaderLab实现玻璃和镜子效果
  5. Linux系统使用crt登录之后如何显示横幅消息
  6. centos 目录结构
  7. JSP页面隐藏了哪些对象
  8. less 循环模拟sass的for循环效果
  9. Spring学习:简单实现一个依赖注入和循环依赖的解决
  10. 关于Jmeter线程数Ramp-Up.循环次数的理解和实验数据