服务:长期后台运行的没有界面的组件

android应用:什么地方需要用到服务?

天气预报:后台的连接服务器的逻辑,每隔一段时间获取最新的天气信息

股票显示:后台的连接服务器的逻辑,每隔一段时间获取最新的股票信息

mp3播放器: 后台长期的播放音乐。

new Thread(){}.start(); 子线程没有界面,也是长期后台运行的。

android系统进程管理是按照一定的规则的:

1.应用程序一旦被打开 通常情况下关闭(清空任务栈)后进程不会停止。方面下一次快速启动。

带来内存不足的问题。

2.Android系统有一套 内存清理机制。 按照优先级去回收系统的内存。

进程分为5个等级的优先级:(从高到低)

1.Foreground process 前台进程  用户正在玩的应用程序对应的进程

2.Visible process 可视进程 用户仍然可以看到这个进程的界面。

3.Service process服务进程  应用程序有一个服务组件在后台运行。

4.Background process 后台进程  应用程序没有服务在运行 并且最小化 (activity onstop)

5.Empty process 空进程 没有任何运行的activity, 任务栈空了

长期后台运行的组件,不要在activity开启子线程。

应该是创建服务,在服务里面开启子线程。

服务的目的:

1.长期后台运行。

2.提高进程的优先级,系统不容易回收掉进程,即便回收了,内存充足的时候,把进程重新创建。

  1. 案例场景:使用一个按钮开启服务,在控制台打印服务启动状况。程序界面如下:

2 Android清单文件如下:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.itheima.testservice"

android:versionCode="1"

android:versionName="1.0" >

<uses-sdk

android:minSdkVersion="8"

android:targetSdkVersion="19" />

<application

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

<activity

android:name="com.itheima.testservice.MainActivity"

android:label="@string/app_name" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

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

</application>

</manifest>

3 布局文件如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity" >

<Button

android:onClick="click"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:layout_centerVertical="true"

android:text="开启服务"/>

</RelativeLayout>

4 MainActivity的代码如下:

package com.itheima.testservice;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

public void click(View view) {

Intent intent = new Intent(this,MyService.class);

startService(intent);

}

}

5 MyService的代码如下:

package com.itheima.testservice;

import android.app.Service;

import android.content.Intent;

import android.os.IBinder;

public class MyService extends Service {

@Override

public IBinder onBind(Intent intent) {

return null;

}

//oncreate ondestory onstart onstop onresume onpause

@Override

public void onCreate() {

System.out.println("服务创建了");

super.onCreate();

}

@Override

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

System.out.println("服务器");

return super.onStartCommand(intent, flags, startId);

}

@Override

public void onDestroy() {

System.out.println("服务器销毁了");

super.onDestroy();

}

}

6.关于接受者的说明

四大组件:

Activity

Content provider 内容提供者

Broadcast receiver 广播接受者

Service  服务

电台:   发送广播

收音机: 接受广播

android系统下的广播:

电池电量低。

电池充电完毕

短信到来了

程序安装卸载

sd卡卸载 安装

1.写一个类继承广播接受者

2.在清单文件配置关心的动作

3.一旦广播事件发生了,就会执行广播接受者的onreceive方法

短信到来的广播接受者 4.4




14_Android中Service的使用,关于广播接收者的说明相关推荐

  1. android 无法接收广播_别告诉我你不认识Android中广播接收者(二)

    前面我们了解了什么是广播接收者与广播接收者的创建,这一次我们要接着继续去了解广播接收者的相关知识,这些知识包括广播接收者的注册.自定义广播与广播的类型. 当我们学习完广播接收者之后,该如何才能让它起到 ...

  2. 广播发送者广播接收者介绍

    1.广播接收者 广播接收者简单地说就是接收广播意图的Java类,此Java类继承BroadcastReceiver类,重写: public void onReceive(Context context ...

  3. Android广播接收者使用总结

    一.BroadcastReceiver广播接收者简介 BroadcastReceiver广播接收者是Android四大组件之一.一般的都要在AndroidManifest中静态注册,但是只有广播接收者 ...

  4. 广播接收者BroadcastReceiver

    Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方 ...

  5. Android开发学习—— Broadcast广播接收者

    1.现实中:电台要发布消息,通过广播把消息广播出去,使用收音机,就可以收听广播,得知这条消息.    Android中:系统在运行过程中,会产生许多事件,那么某些事件产生时,比如:电量改变.收发短信. ...

  6. Android在Service中注册动态广播接收者

    Android广播分为动态.静态广播. 广播接收器注册一共有两种形式 : 静态注册和动态注册. 两者及其接收广播的区别: 1.动态注册的广播 永远要快于 静态注册的广播,不管静态注册的优先级设置的多高 ...

  7. Android中广播接收者BroadcastReceiver详解

    1. 接收系统的广播步骤 (1)  新建一个类继承BroadcastReceiver 以监听sd卡状态的广播接收者为例 1 public class SdCardBroadcastReceiver e ...

  8. android四大组件之Service 注册广播接收者

    广播的注册一共有两种,一种就是用清单文件注册,还有另外一种就是用代码注册,代码注册比较灵活,可以在需要的时候注册,不需要的时候解除注册 用服务注册广播首先要开启服务, 然后在服务oncreate方法里 ...

  9. 安卓学习笔记35:广播接收者

    文章目录 零.学习目标 一.广播接收者概述 (一)广播分类 1.标准广播 2.有序广播 (二)广播接收者作用 (三)广播接收者继承关系图 (四)使用广播接收者 1.创建广播接收者 2.注册广播接收者 ...

最新文章

  1. 《C#精彩实例教程》小组阅读10 -- C#属性与方法
  2. aliyun 日志服务(Log Service,Log)是针对日志场景的一站式服务
  3. 给博客园添加文章自动目录
  4. Mesos在传统金融企业的实践——平安科技陈秋浩实录分享
  5. SpringBoot中定时任务与异步定时任务的实现
  6. java jsoup解析_3使用Jsoup解析Java中HTML文件的示例
  7. mac 连接hbase的图形化界面_MAC安装Hbase以及Hbase基本命令
  8. java 定时任务(三):cron表达式
  9. Android 2.3 r1 中文 API (57) —— ScaleGestureDetector
  10. 周鸿祎:希望将互联网基因与汽车制造企业基因进行重组
  11. fiddler命令cls/select
  12. 数据结构(java版)学习笔记(二)——线性表之顺序表
  13. 正则匹配新闻内容案例,JS和PHP
  14. qconbeijing2017
  15. 文件转换base64流
  16. crackme005
  17. java毕业设计新生宿舍管理系统Mybatis+系统+数据库+调试部署
  18. win10退出微软账号
  19. 【数字IC验证快速入门】14、SystemVerilog学习之基本语法1(数组、队列、结构体、枚举、字符串...内含实践练习)
  20. 2021年危险化学品经营单位主要负责人考试及危险化学品经营单位主要负责人复审模拟考试

热门文章

  1. opencv 学习笔记6:通道的拆分与合并
  2. VTK:多行文本用法实战
  3. wxHtml 示例:帮助测试
  4. boost::statechart模块无效图表测试
  5. boost::multi_array模块实现编写调整大小函数的测试,multi_arrays 将使用来自另一个的范围来构建自己
  6. boost::mpl::size相关的测试程序
  7. boost::mpl模块实现is_sequence相关的测试程序
  8. boost::hana::make_tuple用法的测试程序
  9. boost::graph模块实现边列表算法上的连通分量
  10. boost::geometry::segment_intersection_points用法的测试程序