`
king_tt
  • 浏览: 2289232 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

【Android 开发教程】在Activity和Service之间建立链接

 
阅读更多

本章节翻译自《Beginning-Android-4-Application-Development》,如有翻译不当的地方,敬请指出。

原书购买地址http://www.amazon.com/Beginning-Android-4-Application-Development/dp/1118199545/


通常,service总是在它自己的线程里面执行任务,和调用它的activity线程是相互独立的。如果service只是在后台执行一些循环任务,并且不关心service的状态,是不会产生问题的。举个例子,有一个service在后台打印当前设备的地理位置信息。这种情况下,service不需要和任何activity进行交互。因为,service的主要任务就是打印日志。

然而,想像一下,你想要监视一个特定的地理位置,当设备靠近这个地理位置的时候,service打印地址信息,这时,就需要和activity就行交互。下面的例子展示如果实现service和activity之间的交互。

1. 使用Services工程,修改MyIntentService.java文件。

public class MyIntentService extends IntentService {

    public MyIntentService() {
        super("MyIntentServiceName");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        try {
            int result =
                DownloadFile(new URL("http://www.amazon.com/somefile.pdf"));
            Log.d("IntentService", "Downloaded " + result + " bytes");
            
            //---send a broadcast to inform the activity
            // that the file has been downloaded---
            Intent broadcastIntent = new Intent();
            broadcastIntent.setAction("FILE_DOWNLOADED_ACTION");
            getBaseContext().sendBroadcast(broadcastIntent);

        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
    }

    private int DownloadFile(URL url) {
        try {
            //---simulate taking some time to download a file---
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return 100;
    }
}

2. 修改ServicesActivity.java文件。

public class ServicesActivity extends Activity {
    IntentFilter intentFilter;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    
    @Override
    public void onResume() {
    	super.onResume();

        //---intent to filter for file downloaded intent---
        intentFilter = new IntentFilter();
        intentFilter.addAction("FILE_DOWNLOADED_ACTION");

        //---register the receiver---
        registerReceiver(intentReceiver, intentFilter);
    }
    
    @Override
    public void onPause() {
    	super.onPause();
    	
    	//---unregister the receiver---
    	unregisterReceiver(intentReceiver);
    }
    
    public void startService(View view) {
        startService(new Intent(getBaseContext(), MyIntentService.class));
    }
    
    public void stopService(View view) {
        stopService(new Intent(getBaseContext(), MyService.class));
    }

    private BroadcastReceiver intentReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(getBaseContext(), "File downloaded!",
                    Toast.LENGTH_LONG).show();
        }
    };

}

3. 在模拟器上面调试。

4. 点击start service按钮,大概5秒后会弹出toast提示。


例子很简单,使用广播机制进行线程间的通信。

分享到:
评论

相关推荐

    Activity绑定Service(Kotlin)

    本教程将重点讲解如何在Kotlin环境中实现Activity与Service的绑定、启动、解绑以及关闭过程。 1. **Service的基础概念** Service是Android系统中的一个关键组件,它在后台运行,不提供用户界面。Service可以用来...

    Android开发教程基础版 Android中文开发教程

    《Android开发教程基础版》是一本专为初学者设计的...以上只是《Android开发教程基础版》的部分核心知识点,通过深入学习并实践这些内容,开发者可以建立起扎实的Android开发基础,为进一步提升和进阶打下坚实基础。

    Android开发教程笔记完全版 pdf

    Android开发是全球最受欢迎的移动应用开发...这份"Android开发教程笔记完全版"涵盖了以上所有关键知识点,对于初学者和进阶开发者来说都是宝贵的资源。通过深入学习和实践,你将能够熟练地开发出高质量的Android应用。

    Activity和Service

    在Android开发中,Activity和Service是两个非常重要的组件,它们各自承担着不同的职责,但都是应用程序运行不可或缺的部分。 **Activity**是用户界面的主要载体,它代表了用户可见并与其交互的屏幕。Activity的生命...

    经典Android开发教程奉献

    在Android开发领域,掌握核心概念和技术是至关重要的。这篇教程集合了全面的Android开发知识,旨在帮助初学者和有经验的开发者...这个“经典Android开发教程”将引导你逐步掌握这些技能,祝你在开发旅程中取得成功。

    Android 安卓 开发教程 PDF 电子书

    Android应用由一系列组件构成,如活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供者(Content Provider)。理解这些组件的用途和交互方式是编写高效应用的关键。 五、布局设计 ...

    新版Android开发教程.rar

    的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...

    最简洁的service和activity绑定

    在Android开发中,通过简洁的Service和Activity绑定,我们可以实现高效且直接的交互。这种方式适用于那些需要频繁通信或者需要直接访问Service内部数据的情况。务必注意,绑定Service后,记得在适当的时候解绑,以...

    service与activity之间的通信

    在Android开发中,Service和Activity是两个非常重要的组件。Service主要负责在后台执行长时间运行的任务,而Activity则作为用户交互的界面。它们之间的通信是Android应用中常见的需求,例如播放音乐、下载数据等。本...

    Android 两个Activity之间传值

    在Android应用开发中,Activity是用户界面的基本单元,经常需要在不同的Activity之间传递数据。...此外,`CH01_01`可能是某个章节或教程的一部分,具体内容无法在此提供,但通常会涵盖更多关于Android开发的实践知识。

    新版Android入门开发教程 完整pdf开发笔记

    【Android开发教程】是IT领域中的一个重要分支,尤其对于初学者而言,这是一份非常宝贵的资源。这份"新版Android入门开发教程 完整pdf开发笔记"涵盖了从零开始学习Android应用开发所需的基础知识和实践技能。 ...

    老罗android开发视频教程全集百度网盘链接

    老罗提供的Android开发视频教程覆盖了Android开发的基础到进阶内容,适合初学者入门学习。该教程涵盖了Android开发环境搭建、基本组件使用、UI设计、网络编程、数据库操作等多个方面,旨在帮助学员全面掌握Android...

    14本经典android开发教程和计算器源码

    1. **Android开发从入门到精通**:这是一份全面的教程,涵盖了Android开发的基础到高级概念,包括环境配置、UI设计、Activity管理、Intent传递、服务(Service)、广播接收器(BroadcastReceiver)以及数据存储等。...

    android开发教程.pdf

    ### Android开发教程知识点总结 #### 一、Android框架与组件 - **Android框架**:作为整个Android系统的骨架,包括了核心库以及运行时环境。它提供了应用程序层与硬件层之间的接口,同时也支持多种核心功能,如...

    Android开发教程,最全的安卓开发教程

    【Android开发教程】是专为想要深入学习Android应用开发的初学者和有一定基础的开发者设计的一套全面的指导资料。本教程旨在帮助你从零开始掌握Android开发技能,逐步成长为一名专业的Android应用开发者。 首先,...

    新版Android开发教程及笔记-完整版

    【Android开发基础】 ...这个完整版的Android开发教程及笔记将全面讲解以上内容,为初学者和进阶开发者提供宝贵的参考资料。通过深入学习,你可以熟练掌握Android应用开发,构建出自己的创新应用。

    老罗android开发视频教程全集百度网盘下载

    使接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个 Activity 类(class)负责创建视窗(window),一个活动中的Activity就是在 foreground(前景)模式,背景运行的程序叫做Service。...

    Android开发教程笔记完全版.rar

    这份"Android开发教程笔记完全版"的压缩包文件包含了全面的学习资料,对于初学者和有一定经验的开发者来说,都是宝贵的资源。下面我们将深入探讨其中可能涵盖的知识点。 1. **Android系统架构**:Android系统分为...

    android开发教程

    【Android开发教程】 Android开发是移动应用开发领域的重要部分,主要针对谷歌的Android操作系统进行应用程序的设计、编写和测试。这个“安卓教程android开发视屏教材”涵盖了从基础到进阶的Android开发知识,通过...

    Android官方开发教程中文版

    Android官方开发教程是Android开发者入门和进阶的重要资源,它涵盖了Android应用开发的各个方面,旨在帮助程序员理解并掌握Android平台的编程技术。这份中文版教程是Google官方文档的汉化版本,为中国的开发者提供了...

Global site tag (gtag.js) - Google Analytics