美文网首页
Android开发笔记五

Android开发笔记五

作者: 0a61c9729dbc | 来源:发表于2016-06-03 00:06 被阅读0次

一、Service学习

Service

          Service(服务)是一个没有用户界面的在后台运行执行耗时操作的应用组件。其他应用组件能够启动Service,并且当用户切换到另外的应用场景,Service将持续在后台运行。另外,一个组件能够绑定到一个service与之交互(IPC机制),例如,一个service可能会处理网络操作,播放音乐,操作文件I/O或者与内容提供者(content provider)交互,所有这些活动都是在后台进行。

Service有两种状态,“启动的”和“绑定”:

       通过startService()启动的服务处于“启动的”状态,一旦启动,service就在后台运行,即使启动它的应用组件已经被销毁了。通常started状态的service执行单任务并且不返回任何结果给启动者。比如当下载或上传一个文件,当这项操作完成时,service应该停止它本身。

       还有一种“绑定”状态的service,通过调用bindService()来启动,一个绑定的service提供一个允许组件与service交互的接口,可以发送请求、获取返回结果,还可以通过夸进程通信来交互(IPC)。绑定的service只有当应用组件绑定后才能运行,多个组件可以绑定一个service,当调用unbind()方法时,这个service就会被销毁了。

另外,在官方的说明文档中还有一个警告:

      service与activity一样都存在与当前进程的主线程中,所以,一些阻塞UI的操作,比如耗时操作不能放在service里进行,比如另外开启一个线程来处理诸如网络请求的耗时操作。如果在service里进行一些耗CPU和耗时操作,可能会引发ANR警告,这时应用会弹出是强制关闭还是等待的对话框。所以,对service的理解就是和activity平级的,只不过是看不见的,在后台运行的一个组件,这也是为什么和activity同被说为Android的基本组件。

Service生命周期中的一些方法:

Service生命周期

在新建Service类后需要在Mainfest中注册

注册

IntendService(异步处理服务)

IntentService继承自Service,Service不是一个单独的进程 ,它和应用程序在同一个进程中。

Service也不是一个线程,所以我们应该避免在Service里面进行耗时的操作。

把耗时的操作直接放在Service的onStart方法中,这样会出现(ANR)Application Not Responding!

如果有耗时操作在Service里,就必须开启一个单独的线程来处理。

IntentService使用队列的方式将请求的Intent加入队列,然后开启一个worker thread(线程)来处理队列中的Intent,对于异步的startService请求,IntentService会处理完成一个之后再处理第二个,每一个请求都会在一个单独的worker thread中处理,不会阻塞应用程序的主线程,这里就给我们提供了一个思路,如果有耗时的操作与其在Service里面开启新线程还不如使用IntentService来处理耗时操作。

二、BroadcastReceiver学习

四大组件之一:广播接收器,没有用户界面。可以分为顺序广播和普通广播还有LocalBroadcastManager(本应用的广播)。广播有适用范围不能滥用。

两种注册形式:静态注册  动态注册

Context.sendBroadcast接口发送广播,接收者通过Context.registerReceiver()动态注册

在AndroidManifest.xml文件中通过标签静态注册

动态注册

发送广播

接收广播

三、webview学习

访问网页(注册网络权限):

webView = (WebView) findViewById(R.id.webView);

webView.loadUrl(“http://www.baidu.com“);

webView.setWebViewClient(newWebViewClient(){

@Override

//重新加载

public boolean shouldOverrideUrlLoading(WebView view, String url) {

//在这里加载

urlview.loadUrl(url); 

return   super.shouldOverrideUrlLoading(view, url);}

});

四、widget学习

        App Widget是应用程序窗口小部件(Widget)是微型的应用程序视图,它可以被嵌入到其它应用程序中(比如桌面)并接收周期性的更新。你可以通过一个App Widget Provider来发布一个Widget。

1、注册App Widget

2、初始化xml文件

3、继承AppWidgetProvider

4、AppWidgetProvider继承自 BroadcastReceiver,它能接收 widget 相关的广播,例如 widget 的更新、删除、开启和禁用等。

相关文章

  • Android开发艺术探索 第15章 Android性能优化 读

    正式开始前,推荐一下Android开发艺术探索的其他笔记 Android开发艺术探索 读书笔记目录下面正文开始。 ...

  • Android开发过程中使用的工具

    @随手笔记篇 windoms 应用 Android studio :android开发工具 Gradle :And...

  • IPC笔记

    一、说明 笔记主要是《Android开发艺术探索》的阅读笔记和自己的理解,笔记中部分内容引自《Android...

  • View事件体系笔记

    一、说明 笔记主要是《Android开发艺术探索》的阅读笔记和自己的理解,笔记中部分内容引自《Android...

  • Activity笔记

    一、说明 笔记主要是《Android开发艺术探索》的阅读笔记和自己的理解,笔记中部分内容引自《Android...

  • 常见问题和性能优化

    一、说明 笔记主要是《Android开发艺术探索》的阅读笔记和自己的理解,笔记中部分内容引自《Android...

  • 常用功能

    一、说明 笔记主要是《Android开发艺术探索》的阅读笔记和自己的理解,笔记中部分内容引自《Android...

  • View的工作原理笔记

    一、说明 笔记主要是《Android开发艺术探索》的阅读笔记和自己的理解,笔记中部分内容引自《Android...

  • Android开发笔记五

    一、Service学习 Service Service(服务)是一个没有用户界面的在后台运行执行耗时操作...

  • Android开发之前期准备

    一、安装与环境配置JDK Android开发是基于Java语言的,因此在开发Android应用之前,需要在开发笔记...

网友评论

      本文标题:Android开发笔记五

      本文链接:https://www.haomeiwen.com/subject/dbzbrttx.html