92lvwuji 92lvwuji
现在是程序员
关注数: 6 粉丝数: 91 发帖数: 1,034 关注贴吧数: 46
【技术贴】android系列四大组件之service(服务) service,顾名思义,就是个服务,与activity(服务不同的是)他没有与用户交互的界面,有了 Service 类我们如何启动他呢,有两种方法: • Context.startService() • Context.bindService() 1. 在同一个应用任何地方调用 startService() 方法就能启动 Service 了,然后系统会回调 Service 类的 onCreate() 以及 onStart() 方法。这样启动的 Service 会一直运行在后台,直到 Context.stopService() 或者 selfStop() 方法被调用。另外如果一个 Service 已经被启动,其他代码再试图调用 startService() 方法,是不会执行 onCreate() 的,但会重新执行一次 onStart() 。 2. 另外一种 bindService() 方法的意思是,把这个 Service 和调用 Service 的客户类绑起来,如果调用这个客户类被销毁,Service 也会被销毁。用这个方法的一个好处是,bindService() 方法执行后 Service 会回调上边提到的 onBind() 方发,你可以从这里返回一个实现了 IBind 接口的类,在客户端操作这个类就能和这个服务通信了,比如得到 Service 运行的状态或其他操作。如果 Service 还没有运行,使用这个方法启动 Service 就会 onCreate() 方法而不会调用 onStart()。 总结: 1. startService()的目的是回调onStart()方法,onCreate() 方法是在Service不存在的时候调用的,如果Service存在(例如之前调用了bindService,那么Service的onCreate方法已经调用了)那么startService()将跳过onCreate() 方法。 2. bindService()目的是回调onBind()方法,它的作用是在Service和调用者之间建立一个桥梁,并不负责更多的工作(例如一个Service需要连接服务器的操作),一般使用bindService来绑定到一个现有的Service(即通过StartService启动的服务)。 由于Service 的onStart()方法只有在startService()启动Service的情况下才调用,故使用onStart()的时候要注意这点。 与 Service 通信并且让它持续运行 如果我们想保持和 Service 的通信,又不想让 Service 随着 Activity 退出而退出呢?你可以先 startService() 然后再 bindService() 。当你不需要绑定的时候就执行 unbindService() 方法,执行这个方法只会触发 Service 的 onUnbind() 而不会把这个 Service 销毁。这样就可以既保持和 Service 的通信,也不会随着 Activity 销毁而销毁了。 提高 Service 优先级 Android 系统对于内存管理有自己的一套方法,为了保障系统有序稳定的运信,系统内部会自动分配,控制程序的内存使用。当系统觉得当前的资源非常有限的时候,为了保 证一些优先级高的程序能运行,就会杀掉一些他认为不重要的程序或者服务来释放内存。这样就能保证真正对用户有用的程序仍然再运行。如果你的 Service 碰上了这种情况,多半会先被杀掉。但如果你增加 Service 的优先级就能让他多留一会,我们可以用 setForeground(true) 来设置 Service 的优先级。 为什么是 foreground ? 默认启动的 Service 是被标记为 background,当前运行的 Activity 一般被标记为 foreground,也就是说你给 Service 设置了 foreground 那么他就和正在运行的 Activity 类似优先级得到了一定的提高。当让这并不能保证你得 Service 永远不被杀掉,只是提高了他的优先级。 摘自网络其他资料:关于Service生命周 Android Service生命周期与Activity生命周期是相似的,但是也存在一些细节上也存在着重要的不同: onCreate和onStart是不同的 通过从客户端调用Context.startService(Intent)方法我们可以启动一个服务。如果这个服务还没有运行,Android将启动它并且在onCreate方法之后调用它的onStart方法。如果这个服务已经在运行,那么它的onStart方法将被新的Intent再次调用。所以对于单个运行的Service它的onStart方法被反复调用是完全可能的并且是很正常的。 onResume、onPause以及onStop是不需要的 回调一个服务通常是没有用户界面的,所以我们也就不需要onPause、onResume或者onStop方法了。无论何时一个运行中的Service它总是在后台运行。 onBind 如果一个客户端需要持久的连接到一个服务,那么他可以调用Context.bindService方法。如果这个服务没有运行方法将通过调用onCreate方法去创建这个服务但并不调用onStart方法来启动它。相反,onBind方法将被客户端的Intent调用,并且它返回一个IBind对象以便客户端稍后可以调用这个服务。同一服务被客户端同时启动和绑定是很正常的。 onDestroy 与Activity一样,当一个服务被结束是onDestroy方法将会被调用。当没有客户端启动或绑定到一个服务时Android将终结这个服务。与很多Activity时的情况一样,当内存很低的时候Android也可能会终结一个服务。如果这种情况发生,Android也可能在内存够用的时候尝试启动被终止的服务,所以你的服务必须为重启持久保存信息,并且最好在onStart方法内来做。
【技术贴】Ubuntu Linux下jdk的安装与配置 1.安装   从sun公司网站http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwww.sun&urlrefer=da6e3c1348a859f372a996199e15b0a4 .com下载linux版本的jdk   打开终端,用cd命令进入jdk所在目录,执行复制命令   sudo cp jdk-6u7-linux-i586.bin /usr   即将jdk复制到/usr目录下   然后进入/usr目录   cd /usr   执行权限   chmod +x jdk-6u7-linux-i586.bin   执行安装命令   ./jdk-6u21-linux-i586.bin   (文件名)   如遇错误,可先切换至root用户下,su root,再执行安装命令   安装成功会在/usr目录下生成jdk1.6.0_07目录,就是jdk的安装目录   重启电脑,打开终端,输入java -version   如若有显示java的版本信息,则表示安装成功,   2.配置   安装成功后需要配置jdk环境变量   用cd命令进入/etc目录   sudo vi profile   即执行编辑profile文件命令   在umas k022前添加如下内容:   export JAVA_HOME=/usr/jdk1.6.0_21   export JRE_HOME=/usr/jdk1.6.0_21/jre   export PATH=$PATH:/usr/jdk1.6.0_21/bin   export CLASSPATH=./:/usr/jdk1.6.0_21/lib:/usr/jdk1.6.0_21/jre/lib   保存退出,重启电脑   3.测试   新建Test.java   public class Test{   public static void main(String[] args){   System.out.println("Hello,Welcome to Linux World!");   }   }   在终端用cd命令进入Test.java目录,然后输入   javac Test.java   java Test   若输出   Hello,Welcome to Linux World!   则表明配置成功!   如不能通过编译,可通过重新启动系统试试   4.注意   在用vi命令编辑profile文件时,Linux初学者可能还不熟用   sudo vi profile进入编辑文件后如出现   Press ENTER or type command to continue   则按回车   然后按方向键“下”直到umas k022前一行   按字母o进入编辑状态   输入环境变量内容   回车,按几次ESC键,直到听到"嘀"声,输入   :x   回车   即保存退出   至此,Linux jdk环境变量配置完成
【技术资料】jdk及其简介及java的拓展 JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK 是整个Java的核心,包括了Java运行环境、Java工具和Java基础类库。JDK是学好Java的第一步。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。 SE(J2SE),standard edition,标准版,是我们通常用的一个版本,从JDK 5.0开始,改名为Java SE。   EE(J2EE),enterprise edition,企业版,使用这种JDK开发J2EE应用程序 ,从JDK 5.0开始,改名为Java EE。   ME(J2ME),micro edition,主要用于移动设备、嵌入式设备上的java应用程序,从JDK 5.0开始,改名为Java ME。   没有JDK的话,无法安装或者运行java程序   以下是各版本的名称及发布日期:   版本 名称 发行日期 JDK 1.1.4 Sparkler(宝石) 1997-09-12 JDK 1.1.5 Pumpkin(南瓜) 1997-12-13 JDK 1.1.6 Abigail(阿比盖尔–女子名) 1998-04-24 JDK 1.1.7 Brutus(布鲁图–古罗马政治家和将军) 1998-09-28 JDK 1.1.8 Chelsea(切尔西–城市名) 1999-04-08 J2SE 1.2 Playground(运动场) 1998-12-04 J2SE 1.2.1 none(无) 1999-03-30 J2SE 1.2.2 Cricket(蟋蟀) 1999-07-08 J2SE 1.3 Kestrel(美洲红隼) 2000-05-08 J2SE 1.3.1 Ladybird(瓢虫) 2001-05-17 J2SE 1.4.0 Merlin(灰背隼) 2002-02-13 J2SE 1.4.1 grasshopper(蚱蜢) 2002-09-16 J2SE 1.4.2 Mantis(螳螂) 2003-06-26 Java SE 5.0 (1.5.0) Tiger(老虎) 2004-09-30 Java SE 6.0 (1.6.0) Mustang(野马) 2006-04 Java SE 7.0 (1.7.0) Dolphin(海豚) 2011-07-28 Java SE 8.0 (1.8.0) 未知 2013-09(预定) jdk各个版本的特性   1997 年Servlet技术的产生以及紧接着JSP的产生,为Java对抗PHP,ASP等等服务器端语言带来了筹码。1998年,Sun发布了EJB1.0标准,至此J2EE平台的三个核心技术都已经出现。于是,1999年,Sun正式发布了J2EE的第一个版本。并于1999年底发布了J2EE1.2,在 2001年发布了J2EE1.3,2003年发布了J2EE1.4。   2.J2EE1.3 J2EE1.3的架构,其中主要包含了Applet容器,Application Client容器,Web容器和EJB容器,并且包含了Web Component,EJB Component,Application Client Component,以JMS,JAAS,JAXP,JDBC,JAF,JavaMail,JTA等等技术做为基础。 1.3中引入了几个值得注意的功能:Java消息服务(定义了JMS的一组API),J2EE连接器技术(定义了扩展J2EE服务到非J2EE应用程序 的标准),XML解析器的一组Java API,Servlet2.3,JSP1.2也都进行了性能扩展与优化,全新的CMP组件模型和MDB(消息Bean)。   3.J2EE1.4 J2EE1.4 大体上的框架和J2EE1.3是一致的,1.4增加了对Web服务的支持,主要是Web Service,JAX-RPC,SAAJ,JAXR,还对EJB的消息传递机制进行了完善(EJB2.1),部署与管理工具的增强(JMX),以及新版本的Servlet2.4和JSP2.0使得Web应用更加容易。   4.JAVA EE 5   JAVA EE 5拥有许多值得关注的特性。其中之一就是新的 Java Standard Tag Library (JSTL) 1.2 规范。JSTL 1.2 的关键是统一表达式语言,它允许我们在 JavaServer Faces (JSF) 中结合使用 JSTL 的最佳特性。 编辑本段 组成   JDK包含的基本组件包括:   javac – 编译器,将源程序 转成字节码   jar – 打包工具,将相关的类文件打包成一个文件   javadoc – 文档生成器,从源码注释中提取文档   jdb – debugger,查错工具   java – 运行编译后的java程序(.class后缀的)   appletviewer:小程序浏览器 ,一种执行HTML文件 上的Java小程序的Java浏览器。
1 下一页