- 浏览: 245569 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (281)
- hibernate (16)
- sql工具 (2)
- eclipse (15)
- tomcat (13)
- 项目部署 (4)
- java (62)
- spring (15)
- EL (1)
- javascript (8)
- 正则表达式 (1)
- jQuery (4)
- mysql (15)
- jstl (1)
- jsp (1)
- eclipse,eclipse插件 (1)
- svn (4)
- java,resin (1)
- jdbc (1)
- jdk (2)
- android (21)
- resin (3)
- php (3)
- 其他 (2)
- 数据库 (2)
- cas单点登录 (2)
- 邮箱激活 (1)
- jad (1)
- 支付 (1)
- struts (1)
- jpa (1)
- struts2 (4)
- json (3)
- oracle (2)
- velocity (1)
- sina微博登陆 (2)
- qq账户登录 (1)
- spring security (1)
- java图片处理 (1)
- http请求 (1)
- cas springsecurity (1)
- freemarker (1)
- cas (6)
- java oauth2 (2)
- oauth2.0 (6)
- springsecurity oauth2 (1)
- sms (1)
- springmvc (2)
- spring aop (1)
- luaeclipse (1)
- cocos2d (1)
- hibernate缓存 (1)
- ibatis (1)
- linux (7)
- 技术网站 (1)
- python (2)
- hadoop (1)
- war3 (0)
- elasticsearch (2)
- jboss (1)
- spring data jpa (2)
- java json (1)
- jsonp (1)
- webservice (4)
- java多线程 (1)
- java加密解密 (1)
- spring task (1)
- java session and cookie (1)
- java nio (1)
- 缓存 (1)
- java大数据 (1)
- cygwin (1)
- 设计模式 (1)
- mybatis (2)
- jquery插件 (2)
- jvm内存溢出 (1)
- drools (1)
- cookie and session (1)
- jvm内存设置 (1)
- nginx (1)
- 微信 (1)
- extjs (1)
- redis (7)
- memcached (1)
- js闭包 (1)
- js (0)
- mongodb (3)
- dubbo (2)
- jdk版本问题 (1)
- opnfire (1)
- git (1)
- jsp视频播放 (1)
- 国际化 (1)
- 后台管理 (1)
- yum (1)
- k (1)
- 算法 (0)
- jvm优化 (1)
- java检测 (1)
- maven操作 (0)
- ios打包 (1)
- 网络通信 (1)
- node.js (1)
- maven (4)
- 消息队列 (2)
- springcloud (6)
- mq (2)
- idea (3)
- log4j (1)
- docker (4)
- editplus (1)
- springboot (1)
- Kubernetes (1)
- jenkins (1)
- websocket (1)
- thirft (1)
- strom (1)
- postman (1)
- kafka (1)
- 线程池 (1)
- JVisualVM (1)
- java反射 (1)
- shell (1)
- java8 (2)
- i18 (1)
- jvm (0)
- nio (1)
- nodejs (1)
- idea java (1)
最新评论
-
pengfeifei26:
wbzhaohl 写道这个有解决方案没有时间长了,貌似有点忘了 ...
A redirect is required to get the users approval -
wbzhaohl:
这个有解决方案没有
A redirect is required to get the users approval -
somebody:
恩。好吧。这个只有在 还没发布的 2.0 版本才有。
oauth2.0设置自动授权
/** * Android Service 示例 * */ public class MusicService extends Service { private static final String TAG = "MusicService" ; public static final String ACTION = "com.game.music.service.MusicService"; @Override public IBinder onBind(Intent intent) { Log.v(TAG, "MusicService onBind"); return null; } @Override public void onCreate() { Log.v(TAG, "MusicService onCreate"); super.onCreate(); } @Override public void onStart(Intent intent, int startId) { Log.v(TAG, "MusicService onStart"); super.onStart(intent, startId); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.v(TAG, "MusicService onStartCommand"); return super.onStartCommand(intent, flags, startId); } }
2、在AndroidManifest.xml文件中声明Service组件:
<service android:name="com.game.music.service.MusicService"> <intent-filter> <action android:name="com.game.music.service.MusicService"/> </intent-filter> </service>
3、在需要service的地方通过Context.startService(Intent)方法启动service或者Context.bindService方法来绑定service。
具体测试代码如下:
public class ServiceDemoActivity extends Activity { private static final String TAG = "ServiceDemoActivity"; Button bindBtn; Button startBtn; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); bindBtn = (Button)findViewById(R.id.bindBtn); startBtn = (Button)findViewById(R.id.startBtn); bindBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { bindService(new Intent(MusicService.ACTION), conn, BIND_AUTO_CREATE); } }); startBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { startService(new Intent(MusicService.ACTION)); } }); } ServiceConnection conn = new ServiceConnection() { public void onServiceConnected(ComponentName name, IBinder service) { Log.v(TAG, "onServiceConnected"); } public void onServiceDisconnected(ComponentName name) { Log.v(TAG, "onServiceDisconnected"); } }; @Override protected void onDestroy() { Log.v(TAG, "onDestroy unbindService"); unbindService(conn); super.onDestroy(); }; }
4、日志输出:
面的截图是点击绑定服务时输出的。可以看出,只调用了onCreate方法和onBind方法,当重复点击绑定服务时,没有再输出任何日志,并且不报错。onCreate方法是在第一次创建Service时调用的,而且只调用一次。另外,在绑定服务时,给定了参数BIND_AUTO_CREATE,即当服务不存在时,自动创建,如果服务已经启动了或者创建了,那么只会掉调用onBind方法。
上面的截图是在多次点击启动服务时输出的。可以看出,在第一次点击时,因为Service还未创建,所以调用了onCreate方法,紧接着调用了onStartCommand和onStart方法。当再次点击启动服务时,仍然调用了onStartCommand和onStart方法,所以,在Service中做任务处理时需要注意这点,因为一个Service可以被重复启动。
这里说一下,平常使用多的是startService方法,可以把一些耗时的任务放到后台去处理,当处理完成后,可以通过广播来通知前台。
发表评论
-
getActionBar() 返回为null
2013-08-08 17:21 1597解决办法 1.版本问题,最小改为11 2.manifest.x ... -
Your content must have a ListView whose id attribute is 'android.R.id.list'
2013-08-08 15:26 1473对于以上错误,其实可能是因为我们要实现对ListView中se ... -
apk反编译
2013-08-05 14:28 814工具下载:需用到dex2jar和JD-GUI这2个工具 de ... -
Handler的使用
2013-07-22 10:28 778package android.handler; ... -
Android开发之编程中15个很有用的代码片段
2013-07-22 09:50 6951:查看是否有存储卡插入 String status=En ... -
android 组件生命周期
2013-07-19 10:13 826一.Activity http://xiechengfa.i ... -
Android中模拟器如何访问本地mysql数据库
2013-07-15 12:09 1454package com.game.music; ... -
Android模拟器获取IP的方法
2013-07-15 11:59 1383Android模拟器获取IP的方法 Android模拟器获取I ... -
Android Your content must have a ListView whose id attribute is 'android.R.id.li
2013-07-14 15:38 981Android Your content must have ... -
adb sell中sqlite3 乱码的解决办法
2013-07-12 15:23 12521. 在CMD窗口下输下:chcp 65001 确定 2. 在 ... -
Eclipse开发Android程序如何在手机上运行
2013-07-12 09:30 1105android开发不论是在真机上调试还是最终发布到真机上都非常 ... -
android对话框
2013-07-11 16:11 674http://blog.csdn.net/chenlei188 ... -
android开发中遇到的问题
2013-07-11 15:03 9341.文本框输入法只能输入英文 解决办法:进入模拟器set ... -
android开发中adb的用法
2013-07-11 14:44 1114adb(Android Debug Bridge)是Andro ... -
android 项目源码
2013-07-09 14:43 758http://www.eoeandroid.com/code/ ... -
最新android视频地址及android4.2环境地址
2013-07-06 22:12 871android4.2环境地址 http://develop ... -
设置eclipse里android的图标的显示
2013-07-06 16:06 727图标设置 -
长时间停留在calculating requirements and dependencies 的解决方案
2013-07-06 15:12 713安装android adt时出现 如果Eclipse花 ... -
android开发环境搭建
2013-07-06 12:45 826在开始Android开发之旅启动之前,首先要搭建环境,然后创 ... -
android视频地址
2013-07-04 22:06 796android视频 http://www.howzhi.com ...
相关推荐
本篇文章将详细讲解 `startService` 和 `bindService` 这两种启动 `Service` 的方式,以及它们之间的区别和应用场景。 `startService` 是 Android 中启动 `Service` 的常见方式之一。当你调用 `startService()` ...
本篇将深入探讨Activity和Service的生命周期以及如何利用Android Interface Definition Language (AIDL)进行进程间通信。 Activity是Android应用程序的用户界面,它负责与用户交互。Activity的生命周期分为几个关键...
本示例将深入探讨如何使用`StartService`和`BindService`两种方式来实现音乐播放功能。 ### 1. StartService `StartService`用于启动一个服务,当服务被启动后,它会在后台持续运行,直到服务自行停止或系统因资源...
`onDestroy()`则在Service被停止时调用,标志着Service生命周期的结束。值得注意的是,Service的生命周期管理需要谨慎处理,以避免内存泄漏和不必要的资源消耗。 Service与Activity之间的通信是通过Binder机制实现...
总的来说,Android Service的生命周期管理是开发者必须掌握的关键技能,正确理解和使用Service生命周期能够确保应用的稳定性和效率,避免不必要的资源消耗。在开发过程中,我们还需要注意Service的权限管理,以及在...
当首次调用`startService()`时,Service进入创建状态,`onCreate()`方法被调用。接着,如果Service尚未运行,`onStartCommand()`会被调用,用于处理服务的启动请求。如果Service已经运行,`onStartCommand()`则会因...
Service生命周期的理解和正确管理对于优化应用程序性能至关重要。以下是一个关于Service生命周期的详细解析,结合代码示例来阐述如何在Android中操作Service。 1. **Service生命周期概述** Service的生命周期主要...
Service生命周期中的`onCreate()`方法在首次启动时被调用,后续的`startService()`调用不会再次触发`onCreate()`,而是会调用`onStartCommand()`方法,用于传递Intent数据并执行相应的任务。这意味着,即使启动...
在TestBindService示例中,你应该可以看到如何创建一个简单的Service,定义它的生命周期方法,以及如何在客户端Activity中绑定和解绑这个Service。通过查看源代码,你可以更深入地理解`BindService`的工作原理和用法...
- 未绑定Activity的Service生命周期图显示了startService()启动的过程,而绑定Activity的Service生命周期图则展示了bindService()启动的过程,两者在生命周期上有显著差异。 理解并熟练掌握Service的生命周期及其...
startService启动方式,只在activity中启动和销毁,和activity关系不大,即使antivity退出,服务任然运行,比如后台放音乐,对应生命周期: bindService启动方式,和activity绑定后,和activity共存亡,activity...
总结来说,本代码清单详细展示了如何在Android应用中创建并管理Service的生命周期,包括启动、停止、绑定和解绑Service的过程。理解并熟练掌握Service的生命周期对于Android开发者来说至关重要,因为这有助于确保...
这是Service生命周期中的最后一个回调,开发者应在此处释放所有资源。 3. 启动服务(Started Service) 当通过startService()启动Service时,Service会在后台无限运行,直到调用stopService()或stopSelf()才会停止...
使用`startService()`方法启动Service,这会导致Service生命周期中的`onStartCommand()`被调用。若要停止Service,可以调用`stopService()`。需要注意的是,即使调用了`stopService()`,Service可能并不会立即停止,...
本篇文章将深入探讨如何使用`bindService`和`unbindService`方法来与服务进行交互,这是服务生命周期管理的重要部分。 一、Service的基本概念 Service是Android四大组件之一,它可以在后台运行,即使用户离开了应用...
6. **Service生命周期**: Service的生命周期包括`onCreate()`, `onStartCommand()`, `onBind()`, `onUnbind()`, `onDestroy()`等关键方法。在创建Service时,会调用`onCreate()`,接着如果是通过`startService()`...
相比于使用`startService()`,`bindService()`提供了更紧密的耦合,使得调用者可以直接调用Service中的方法,而不仅仅是发送意图。绑定服务通常用于需要频繁交互或者需要对服务有精确控制的场景,比如播放音乐时调整...
三、Service生命周期 1. onCreate(): 当Service首次被创建时调用,可以在这里初始化Service所需资源。 2. onStartCommand(): 对于startService()启动的Service,每次调用startService()都会触发此方法,返回值决定了...
本篇文章将深入探讨 `startService()` 方法及其相关的生命周期,帮助开发者更好地理解和使用这一核心功能。 `startService()` 是在Android中启动一个Service的方法,它的主要特点是:服务一旦启动,就会在后台持续...