关于android编程中service和activity的区别

一、

绝大部分情况下,Service的作用是用来“执行”后台的、耗时的、重要的任务,三者缺一不可,而最重要的原因是第三点:要执行重要的任务。

因为当一个进程启动了Service后,进程的优先级变高了,系统除非在非常极端的情况下,不会杀掉该进程,反观Activity,不具备这样的特性。

如果没有满足上面所说的三点,请谨慎使用Service,千万别把使用Service的理由变成:这样可以常驻后台。从资源使用的角度来看,这是非常不可取的。

二、

1.Activity和Service的生命周期不一样,Activity处在哪个生命周期是由系统控制的,service是由程序控制的,service不能自己启动,而且service不与用户交互。

2.A Service is an application component that can perform long-running operations in the background and does not provide a user interface.

最重要的区别还是service能后台运行,activity不能。

3.service就是没界面关联的纯逻辑Activity,然后,service能够有两种状态,1.程序退出后在后台运行本服务,2.程序运行时在后台执行某些操作。

4.除了楼上所说的,service的另外一种重要的用途是实现跨进程调用,其中Binder的概念比较重要,AIDL也与Binder有关,而Acitity并不处理跨进程调用的工作。

5.Service后台运行,类似服务,和Activety是一个级别类似,但是自己无法运行,需要Activity或者其他对象调用。

三、

从设计的角度来讲:
Android的Activity的设计与Web页面非常类似,从页面的跳转通过连接,以及从页面的定位通过URL,从每个页面的独立封装等方面都可以看出来,它主要负责与用户进行交互。

Service则是在后台运行,默默地为用户提供功能,进行调度和统筹,如果一棵树的地上部分是Activity的话,它庞大的根须就是Service。Android的服务组件没有运行在独立的进程或线程中,它和其他的组件一样也在应用的主线程中运行,如果服务组件执行比较耗时的操作就会导致主线程阻塞或者假死,从而无法响应用户的操作。

从使用的角度来讲:
Service不仅可以给Activity建立双向连接,为Activity提供数据和功能支持,也可以单向接受Intent的请求,进行数据的分析处理和功能调度。

从扮演的角色来讲:
Activity的功能比较单一,主要就是显示应用所具有的一些功能,帮助用户与应用进行交互,像一个人的脸。而Service可能扮演功能调度者也能扮演功能提供者,从触发器收集信息进行分析和处理,然后更新界面,修改数据或进行其他操作时是一个功能调度者,从输入法的选择考虑Service扮演的就是一个功能提供者。View组件是Android中用户能够实实在在看到的部分,如按钮,输入框等就是继承自这个类,View只有装入Activity这样的容器中才有意义,而反过来
Activity装入了这些View后才能够成功完成与用户交互的任务,但是Service不需要这些花哨的东西,只需要默默地等待事件发生或者听候差遣。

四、

1.Activity是Android应用的核心概念,简而言之Activity为用户交互管理者,有一个可视界面呈现,而Service跟Activity的区别是他在后台运行,没有界面呈现。

2。service和activity在使用intent上的细小区别,就是intent的传值上有区别

(1)

//进行activity与service之间的跳转
//一个activity 叫做 Mp3listActivity
//一个service 叫做 Mp3downloadService
//代码片段
Intent intent = new Intent();
intent.putExtra("mp3info",mp3info);
intent.setClass(this,Mp3downloadService.class);
startService(intent);
//--------------------------
//你看到了跳转到一个service
//--------------------------
//在service中
//startCommand(Inent intent,int flags, int startId)
//取值代码
Mp3Info mp3info = (Mp3Info)intent.getSerializableExtra("mp3info");
//-----------------------------------------------------------------

(2)

//进行activity与activity之间的跳转
//一个activity 叫做 Mp3listActivity
//一个activity 叫做 Mp3PlayActivity
//关键代码片段
Intent intent = new Intent();
intent.putExtra("mp3info", mp3info);
intent.setClass(this,Mp3PlayActivity.class);
startActivity(intent);
//-----------------------------
//你看到了跳转到Mp3PlayActivity
//-----------------------------
//onCreate()方法中的取值代码 intent = getIntent();
Mp3Info mp3info = (Mp3Info)intent.getSerializableExtra("mp3info");
//------------------------------------------------
//自己尝试了解,能自己得出Service和activity在intent传值的细小区别

关闭Activity后怎么让service继续运行?

1.如果你的service没有binder Activity话,activity关闭service也在后台运行

2.你是怎么启service ,如果是startService ,关闭了 调用service的线程,service是不会被关闭的,如果是bindService,Service就和调用bindService的进程同生共死了,也就是说当调用bindService的进程死了,那么它bind的Service也要跟着被结束

http://blog.csdn.net/foreverhuylee/article/details/20372055原文链接
时间: 2024-10-01 05:28:39

关于android编程中service和activity的区别的相关文章

android开发中关于继承activity类中方法的调用

android开发中关于继承activity类中的函数,不能在其他类中调用其方法. MainActivity.java package com.example.testmain; import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState)

Android编程中的实用快捷键

作为一个优秀的程序员,不但要能开发出漂亮的软件,也要能熟练掌握编程的技巧,包括IDE的快捷键使用.比如linux 下的VI编辑器,对于不熟练快捷键的人来说就是一个噩梦,但一旦你熟练了VI的快捷键,VI的效率会比用鼠标的编辑器还高.甚至VI为了减少手指在主键盘 区和方向键之间切换的时间耗散,直接将方向键设为了hjkl,可见熟练键盘使用对程序员的意义是多么重要. Android官方推荐的开发平台Eclipse是一个非常强大的IDE环境,其数以百记的快捷键为Android开发人员提供了很大的便利,但难

Android编程中用到的activity的详细的启动模式

Activity有四种加载模式:standard(默认), singleTop, singleTask和 singleInstance.参考官方文档,下面分别说明它的的区别: standard:Activity的默认加载方法,即使某个Activity在 Task栈中已经存在,另一个activity通过Intent跳转到该activity,同样会新创建一个实例压入栈中.例如:现在栈的情况为:A B C D,在D这个Activity中通过Intent跳转到D,那么现在的栈情况为: A B C D D

android编程常见问题-No Launcher activity found!

新手编程常见的问题: 问题表现: console提示:No Launcher activity found! The launch will only sync the application package on the device! 解决办法:检查AndroidManifest.xml中是否添加如下代码: <intent-filter > <action android:name="android.intent.action.MAIN"/> <cat

Android中Service与Thread的区别

很多时候,你可能会问,为什么要用 Service,而不用 Thread 呢,因为用 Thread 是很方便的,比起 Service 也方便多了,下面我详细的来解释一下. 1). Thread:Thread 是程序执行的最小单元,它是分配CPU的基本单位.可以用 Thread 来执行一些异步的操作. 2). Service:Service 是android的一种机制,当它运行的时候如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的.如:onCreat

【转载】Android开发中巧用Activity和Fragment

1.Activity的生命周期 1)多个Activity组成Activity栈,当前活动位于栈顶.我们先来看看各种Activity基类的类图: 当Activity类定义出来之后,这个Activity何时被实例化.它所包含的方法何时被调用,这些都不是由开发者所决定的,都应该由Android系统来决定. 下面我们来看一下Activity的生命周期: 2.Activity的用法 1)启动.关闭Activity // 首先需要创建启动的Activity对应的Intent Intent intent =

Android编程中常用的PopupWindow和Dialog对话框

注意:PopupWindow组件的使用问题,PopupWindow是一个阻塞对话框,如果你直接在Activity创建的方法中显示它,则会报错:android.view.WindowManager$BadTokenException:Unable to add window -- token null is not valid; is your activity running? 总结: PopupWindow必须在某个事件中显示或者是开启一个新线程去调用,不能直接在onCreate方法中显示一个

android编程中setLayoutParams方法设置

第一篇 private LinearLayout generateHeadOfControl() { LinearLayout LayoutHead = createLayout(LinearLayout.HORIZONTAL); Button DateButton = generateDateButton(); Button ItemButton = generateItemButton(); DateButton.setLayoutParams(new LinearLayout.Layout

Android编程中,sp和px和dp有什么区别

sp: 一般用来设置字体的大小.设置sp时,如果设置系统的字体为大.小等,应用程序的字体也会跟随系统变化. px: 是绝对像素点.设置大小时5px就是五个像素点的长度. dp: device independent pixels(设备独立像素),一般我们为了支持WVGA.HVGA和QVGA 推荐使用这个,不依赖像素.