- 浏览: 116004 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (99)
- 网络 (4)
- 搜索 (5)
- linux (8)
- java (5)
- database (4)
- android (13)
- wince (2)
- erlang (2)
- c/c++ (4)
- misc (1)
- 网络 BitTorrent (2)
- 网页截图 (1)
- chrome扩展 (0)
- cocos2d (1)
- android ContentProvider (0)
- linux jni (1)
- ios (1)
- scala (0)
- hbase (1)
- java profiler (1)
- go (1)
- Docker registry (0)
- Docker (2)
- golang (1)
- cas (1)
- rust (1)
- qt (1)
- mesos (1)
- marathon (1)
- Rxjava (0)
- RxJava Scheduler (1)
- windows (1)
- des 3des java nodejs (1)
- kotlin (1)
最新评论
-
TheMatrix:
tab切换时,每次都重新加载onCreateView方法,这个 ...
android FragmentTabHost -
458832194:
...
android FragmentTabHost -
simplehappy:
main_relative.xml和main_linear.x ...
android FragmentTabHost -
tkpc:
感谢Google这么快就搜索到我想要的,楼主的做法是可行的,算 ...
android FragmentTabHost
/**以下内容主要来源于android-sdk-windows/docs**/
services
- Started Service
- Bound Service
线程模型
A service runs in the main thread of its hosting process—the service does not create its own thread and does not run in a separate process (unless you specify otherwise).
在manifest文件中声明services
<manifest ... > ... <application ... > <service android:name=".ExampleService" /> ... </application> </manifest>
Started Service
可以从Service或者IntentService继承,IntentService从Service继承,内部使用了一个工作线程和队列串行处理请求,如果对并发请求要求不高的话,推荐使用IntentService
可以从Service或者IntentService继承,IntentService从Service继承,内部使用了一个工作线程和队列串行处理请求,如果对并发请求要求不高的话,推荐使用IntentService
启动一个服务,当调用startService时,系统会调用服务的onStartCommand
Intent intent = new Intent(this, HelloService.class); startService(intent);
如果希望获取结果,可使用PendingIntent(for a broadcast)
继承IntentService实现服务:
public class HelloIntentService extends IntentService { /** * required */ public HelloIntentService() { super("HelloIntentService"); } /** *当启动服务后,该方法在一个默认的工作线程中执行,当这个方法返回时,服务自动停止. */ @Override protected void onHandleIntent(Intent intent) { // Normally we would do some work here, like download a file. // For our sample, we just sleep for 5 seconds. long endTime = System.currentTimeMillis() + 5*1000; while (System.currentTimeMillis() < endTime) { synchronized (this) { try { wait(endTime - System.currentTimeMillis()); } catch (Exception e) { } } } } @Override public int onStartCommand(Intent intent, int flags, int startId) { //my Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show(); //基类的一定要调用 return super.onStartCommand(intent,flags,startId); } }
继承Service实现服务:
public class HelloService extends Service { private Looper mServiceLooper; private ServiceHandler mServiceHandler; // Handler that receives messages from the thread private final class ServiceHandler extends Handler { public ServiceHandler(Looper looper) { super(looper); } @Override public void handleMessage(Message msg) { // Normally we would do some work here, like download a file. // For our sample, we just sleep for 5 seconds. long endTime = System.currentTimeMillis() + 5*1000; while (System.currentTimeMillis() < endTime) { synchronized (this) { try { wait(endTime - System.currentTimeMillis()); } catch (Exception e) { } } } // Stop the service using the startId, so that we don't stop // the service in the middle of handling another job stopSelf(msg.arg1); } } @Override public void onCreate() { // 创建一个工作线程 // Start up the thread running the service. Note that we create a // separate thread because the service normally runs in the process's // main thread, which we don't want to block. We also make it // background priority so CPU-intensive work will not disrupt our UI. HandlerThread thread = new HandlerThread("ServiceStartArguments", Process.THREAD_PRIORITY_BACKGROUND); thread.start(); // Get the HandlerThread's Looper and use it for our Handler mServiceLooper = thread.getLooper(); mServiceHandler = new ServiceHandler(mServiceLooper); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show(); // For each start request, send a message to start a job and deliver the // start ID so we know which request we're stopping when we finish the job Message msg = mServiceHandler.obtainMessage(); msg.arg1 = startId; mServiceHandler.sendMessage(msg); // If we get killed, after returning from here, restart return START_STICKY; } @Override public IBinder onBind(Intent intent) { // We don't provide binding, so return null return null; } @Override public void onDestroy() { Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show(); } }
注意onStartCommand的返回值,决定当服务被杀掉后,系统怎么处理请求
停止服务
发表评论
-
Installation error: INSTALL_FAILED_UPDATE_INCOMPATIBLE
2017-04-05 22:27 768eclipse调试安装时报错: Installation ... -
android 当ListView滚动时自动调用 onCheckedChanged 导致CheckBox 状态不停变化
2016-02-24 09:53 557http://blog.sina.com.cn/s/blo ... -
android ndk 找不到 getpwuid_r
2015-08-20 09:25 2025需要android-21, 之前的版本有getpwuid -
android AlarmManager
2014-02-11 14:04 565http://developer.android.com/r ... -
android模块化开发
2013-05-04 21:11 726多个apk设置相同的android:sharedUserI ... -
简单通用的ContentProvider
2013-02-22 16:38 2067常用简单的ContentProvide ... -
android --core-library 错误
2012-11-30 09:47 1721trouble processing "jav ... -
cocos2d-x tutorials: Start with Android
2012-10-15 21:28 834在windows平台下, 编辑create-android-p ... -
android bound services
2012-01-31 21:04 0当没有客户端bound到service,系统destro ... -
android activity
2012-01-27 16:43 0系统会保存activity到back stack中, Tas ... -
android Menus
2012-01-27 15:29 0Menus分为Options Menu(按menu键 ... -
android Menus
2012-01-27 15:28 1Menus分为Options Menu(按menu键出来 ... -
android
2012-01-26 15:32 627NinePatch, 中文解释 -
android基础(2)
2011-10-03 16:37 5/**以下内容主要来源于android-sdk-windows ... -
android基础(2)
2011-10-03 16:21 0Services -
android基础(1)
2011-10-01 13:17 1074/**以下内容主要来源于android-sdk-windows ... -
vlc-android编译流程
2011-06-14 20:07 4485最新直接看这里http://wiki.videolan.or ... -
android
2010-10-26 23:07 22881. http://developer.android.com ...
相关推荐
android基础2.ppt
这篇“Android基础教程PPT”旨在引导初学者了解如何使用Eclipse环境进行Android应用开发。首先,我们从创建或导入Android工程开始。 要开启一个新的Android工程,你需要在Eclipse中选择[File]->[New]->[Project],...
android基础教程,里边包括新版Android开发教程&笔记1--基础入门,Android开发教程&笔记2--基础入门二,Android开发教程&笔记3--环境搭建与解析,Android开发教程&笔记4--Dalvik ADB Android开发教程+笔记5--模拟器...
在Android基础的学习中,"Android基础-02"这一主题主要涵盖了Android开发的基本概念和核心组件,这些都是构建Android应用程序的基础。下面将详细讲解这些知识点。 首先,Android是一种基于Linux内核的操作系统,...
**Android基础教程4** 在Android开发的学习过程中,基础教程4主要涵盖了Android开发的多个关键方面,包括用户界面设计、文件存取、数据库编程、应用程序管理、权限控制以及资源管理等核心概念。以下是对这些主题的...
《Android基础教程 第三版》是一本针对初学者和进阶开发者的重要参考资料,全面覆盖了Android应用开发的基础知识。此版本的PDF版本以其高质量的文本和包含源码的特点,为学习者提供了便捷的学习途径。书中的内容围绕...
Android基础与应用开发教程 Android基础与应用开发教程
Android读写XML(上)——package说明.doc Android读写XML(下)——创建XML文档.doc Android读写XML(中)——SAX.doc Android高手进阶教程之----Android Handler的使用!...Android基础教程之----五大布局对象.doc
在介绍Android的基础知识时,首先需要了解其系统架构。Android采用了分层的设计,从上到下依次分为应用程序层、应用程序框架层、Android运行时和库、Linux内核四个层次。各个层次承担着不同的功能,保证了整个系统的...
### Android基础教程(第3版·修订版)关键知识点概览 #### 一、书籍概述与定位 《Android基础教程(第3版·修订版)》是一部专为Android开发新手及中级开发者准备的基础教程。本书延续了Pragmatic系列图书的一贯风格...
这些资料主要涵盖的是Android开发的基础教程,源自2015年12月28日传智播客官网上金老师的课程。在这个系列中,学员可以通过day07到day11的源码学习Android应用程序开发的基本概念和技术。让我们逐一探讨这些知识点。...
**Android基础教程** Android是一种基于Linux内核的开源操作系统,主要应用于移动设备,如智能手机和平板电脑。这个基础教程旨在帮助初学者理解Android开发的基本概念和技术。教程可能涵盖了以下几个核心主题: 1....
《Android基础教程 第3版 修订版》是学习Android开发的重要参考资料,针对初学者和有一定经验的开发者都具有很高的参考价值。本教程深入浅出地介绍了Android开发的基础知识,包括环境搭建、应用结构、UI设计、数据...
以下是一些主要的Android基础控件及其使用方法的详细说明: 1. **按钮(Button)** - `Button`控件用于实现点击事件,用户可以触发某种操作。可以通过`setOnClickListener`设置监听器,如: ```java Button button...
《Android移动开发基础案例教程(第2版)》是一份专为初学者设计的教学资料,旨在帮助学习者掌握Android应用开发的基本技能。这份PPT涵盖了Android开发的核心概念、工具使用以及实战案例,对于想要踏入Android开发...
Android基础开发与实践
Andro,Android基础教程Android基础教程Android基础教程id基础教程
Android 基础笔记 Android 基础笔记是 Android 开发的入门知识点总结,涵盖了 Android 开发的基础知识点,从 Android 发展史到自定义 ContentProvider 的实现。 一、Android 发展史 Android 的发展史可以追溯到 ...
android基础_2.exe
Android基础入门教程,网上教程,打包成chm,看得时候方便一些 教程于2015年7月开始撰写,耗时半年,总共148节,涵盖了Android基础入门的大部分知识。