Android--启动广播(Broadcast)

1.定义广播组件,组件类型继承BroadcastReceiver类:

package org.lxh.demo;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class MyBroadcastReceiverUtil extends BroadcastReceiver {

	public MyBroadcastReceiverUtil(){
	       System.out.println("***每次广播都会实例化一个新的广播组件进行操作!");
	}

	@Override
	public void onReceive(Context context, Intent intent) {//注意参数
		Toast.makeText(context, "广播已经启动", Toast.LENGTH_LONG).show();

	}

}

2.main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/mybtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="开始广播" />

</LinearLayout>

3.定义Activity程序发送广播:

package org.lxh.demo;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Hello extends Activity {
	private Button mybtn = null;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState); // 生命周期方法
		super.setContentView(R.layout.main); // 设置要使用的布局管理器
		this.mybtn = (Button) super.findViewById(R.id.mybtn);
		this.mybtn.setOnClickListener(new OnClickListenerImpl());

	}

	private class OnClickListenerImpl implements OnClickListener {

		public void onClick(View arg0) {
			Intent it = new Intent(Intent.ACTION_EDIT);
			Hello.this.sendBroadcast(it);
		}

	}
}

4.在AndroidManifest.xml文件中注册广播组件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="org.lxh.demo"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

    <application
        android:icon="@drawable/icon"
        android:label="@string/app_name" >
        <activity
            android:name=".Hello"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

        <strong><span style="color:#ff0000;"><receiver
            android:name="MyBroadcastReceiverUtil"
            android:enabled="true" >
            <intent-filter>
                <action android:name="android.intent.action.EDIT" />
            </intent-filter>
        </receiver></span></strong>
    </application>

</manifest>

5.运行实例如下:

时间: 2024-11-05 12:20:54

Android--启动广播(Broadcast)的相关文章

Android 7.0 ActivityManagerService(5) 广播(Broadcast)相关流程分析

本篇博客旨在分析Android中广播相关的源码流程. 一.基础知识 广播(Broadcast)是一种Android组件间的通信方式. 从本质上来看,广播信息的载体是intent.在这种通信机制下,发送intent的对象就是广播发送方,接收intent的对象就是广播接收者. 在Android中,为广播接收者定义了一个单独的组件:BroadcastReceiver. 1 BroadcastReceiver的注册类型 在监听广播前,要将BroadcastReceiver注册到系统中. Broadcas

《Android深入透析》之广播(Broadcast)

摘要 在android中,Broadcast作为四大组件之一,被广泛的应用在android程序之间的数据传递.举一个大家都比较熟悉的例子来说明.在车上的时候大家都有收听广播的习惯,广播电台通过发送不同频率的信号,然后大家通过将各自频率调成和电台相同的频率,就可以接受到广播内容了.在android中的广播其实是和这个是一样的效果的. 1.     概述 在android中,Broadcast作为四大组件之一,被广泛的应用在android程序之间的数据传递.举一个大家都比较熟悉的例子来说明.在车上的

品茗论道说广播(Broadcast内部机制讲解)(下)

下面我们来看,递送广播动作中最重要的processNextBroadcast(). 3.2 最重要的processNextBroadcast() 从processNextBroadcast()的代码,我们就可以看清楚前面说的“平行广播”.“有序广播”和“动态receiver”.“静态receiver”之间的关系了. 我们在前文已经说过,所有的静态receiver都是串行处理的,而动态receiver则会按照发广播时指定的方式,进行“并行”或“串行”处理.能够并行处理的广播,其对应的若干recei

android学习九(android的广播)

在这里 篇文章里面我将总结广播接收器(Broadcast Receiver)方面的知识.首先我们来了解下andorid中广播的类型,android中的广播可以分为2种,标准广播和有序广播. 标准广播:是一种完全异步执行的广播,在广播发出后,所有广播接收器几乎都会同一时刻接收到这条广播消息,因此它们之间没有任何先后顺序可言.这种广播的效率比较高,但同时也意味着它无法被截断的. 有序广播:则是一种同步机制的广播,在广播发出之后,同一时刻只会有一个广播接收器能够接收到这条广播信息,当这个广播接收器中逻

Android启动早于系统应用的第三方应用,杀不死自动重启的第三方应用

1.为什么第三方应用能早于System的app启动? Android应用的启动顺序网上有一大堆资料可以查阅了,这里就不细述了,这里不阐述ROM启动还有bootloader,软件启动的大致流程应该是 启动kernel 运行servicemanager 把一些native的服务用命令启动起来(包括wifi, power, rild, surfaceflinger, mediaserver等等) 启动Dalivk中的第一个进程Zygote -> 启动java 层的系统服务system_server(包

[Android Pro] 有关Broadcast作为内部类时注册的一些问题

很经常Broadcast都会写成一个Activity或者Service的内部类.这时候的注册和普通有点小区别. 有两种情况 1.假如是再Manifest文件里面静态注册的话,需要注意. ex: <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <r

Android 启动流程分析

原文:https://www.jianshu.com/p/a5532ecc8377 作者曾经在高通的Android性能组工作,主要工作是优化Android Application的启动时间. APP基础理论 要想优化App启动时间, 第一步就是了解App启动进程的工作原理. 有几个基础理论: Android Application与其他移动平台有两个重大不同点: 每个Android App都在一个独立空间里,意味着其运行在一个单独的进程中,拥有自己的VM, 被系统分配一个唯一的user ID A

Android 静态广播和动态广播接收顺序

Android广播有两个很重要的要素: 1 广播 - 用于发送广播 有序广播  -  被广播接收器接收后,可被终止,无法往下继续传达.         典型代表:短信广播 普通广播  -  发送至每一个已经注册(订阅)的广播接收器,无法被终止. 典型代表:开机启动广播 2 广播接收器 - 用于订阅广播后接收广播 静态注册广播 - 在AndroidManifest.xml中设置,程序不用启动亦可接收. 典型代表:很多开机启动的APP,都是接收开机启动广播带起服务的. 动态注册广播 - 代码中注册广

Android之广播(1)

(以下内容是阅读郭霖大神的<第一行代码>后自己总结的) 1.概述 广播是Android的四大组件之一. Android的广播机制十分灵活. 2.发送广播 如上图Android的广播主要分为两类:标准广播和有序广播. 所有的广播接收器都可以接收到标准广播,而且他们的接收几乎是在同一时刻.这意味着标准广播的效率很高,但无法被截断. 在接收有序广播时,广播接收器是由先后顺序的,优先级高的接收器先接收到广播,并且有权对该广播截断,不让后续接收器接收到. 发送标准广播和有序广播的方式非常简单. //发送

自定义广播Broadcast

/*发送一个自定义广播 * 指定广播目标Action * 可通过Intent携带消息 * 发送广播消息 */ private void sendMyBroadcast(){ Intent intent = new Intent("MyReceiver_Action"); intent.putExtra("msg", "发送自定义的广播"); sendBroadcast(intent); } //自己写的一个广播类 public class Bro