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

??

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

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

??

??

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2025-01-01 23:45:09

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

Android 广播接收者 BroadcastReceiver

Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组件之间的消息通信: 4.不同app之间的组件之间消息通信: 5.Android系统在特定情况下与App之间的消息通信. 从实现原理看上,Andro

广播发送者&amp;amp;广播接收者介绍

1.广播接收者 广播接收者简单地说就是接收广播意图的Java类,此Java类继承BroadcastReceiver类,重写: public void onReceive(Context context,Intent intent),其中intent可以获得传递的数据: 广播意图就是通过Context.sendBroadcast(Intent intent)或Context.sendOrderedBroadcast(Intent intent)发送的意图,通过这个语句,能够广播给所有满足条件的组件

android 49 广播接收者中启动其他组件

main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id

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

广播的注册一共有两种,一种就是用清单文件注册,还有另外一种就是用代码注册,代码注册比较灵活,可以在需要的时候注册,不需要的时候解除注册 用服务注册广播首先要开启服务, 然后在服务oncreate方法里注册广播,在ondestory方法里解除注册就可以了 package com.example.zhuceBroadcast; import android.app.Activity; import android.content.Intent; import android.os.Bundle; i

Android中广播接收者BroadcastReceiver详解

1. 接收系统的广播步骤 (1)  新建一个类继承BroadcastReceiver 以监听sd卡状态的广播接收者为例 1 public class SdCardBroadcastReceiver extends BroadcastReceiver { 2 3 @Override 4 public void onReceive(Context context, Intent intent) { 5 String action = intent.getAction(); 6 if("android

Android中使用广播接收者实现IP拨号

布局文件中定义一下UI,虽然没什么UI..... <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:orientation="vertical"

android中代码形式注册广播接收者

   /**   * 自定义内部类实现广播接受者    *    * @author Byron   *    */  class OutCallReceiver extends BroadcastReceiver {   @Override   public void onReceive(Context context, Intent intent) {       }  }      // 用代码去注册广播接收者   receiver = new OutCallReceiver();   I

[android] 代码注册广播接收者&amp;利用广播调用服务的方法

利用广播调用服务里面的方法,间接的方式调用服务内部的方法,与现实中差不多,请媒体曝光 主界面里面 在界面创建的时候开启一下服务普通的startService()方法 发送一条广播出去 获取Intent对象,通过new出来 调用Intent对象的setAction()方法,参数:一般就是包名 调用sendBroadcast(intebt)方法,发送广播,参数:Intent对象 服务里面 新建一个MyService类继承系统的Service类 添加一个自定义的服务的方法callServiceMeth

广播接收者

一.广播发送者&广播接收者介绍 1.广播接收者 广播接收者简单地说就是接收广播意图的Java类,此Java类继承BroadcastReceiver类,重写: public void onReceive(Context context,Intent intent),其中intent可以获得传递的数据: 广播意图就是通过Context.sendBroadcast(Intent intent)或Context.sendOrderedBroadcast(Intent intent)发送的意图,通过这个语