android绑定service
Ⅰ android 如何让service不在主线程中运行
调用者与服务绑定在一起就可以让service不在主线程中运行。安卓是一种基于Linux内核的自由及开放源代码的操作系统。
主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。
系统信息
Android一词的本义指机器人,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。Android一词最早出现于法国作家利尔亚当在1886年发表的科幻小说未来夏娃中。
他将外表像人的机器起名为Android。Android的Logo是由Ascender公司设计的,诞生于2010年,其设计灵感源于男女厕所门上的图形符号,于是布洛克绘制了一个简单的机器人,它的躯干就像锡罐的形状,头上还有两根天线,Android小机器人便诞生了。
其中的文字使用了Ascender公司专门制作的称之为Droid的字体。Android是一个全身绿色的机器人,绿色也是Android的标志。
Ⅱ android 一个service可以和多个activity绑定吗
是可以的
Ⅲ android service有什么用
Service是Android系统中的四大组件之一,它是一种长生命周期的,没有可视化界面,运行于后台的一种服务程序。如果service是被开启的,那么它的活动生命周期和整个生命周期一同结束。如果service是被绑定的,它们它的活动生命周期是在onUnbind()方法返回后结束。
service积极活动的生命时间(active lifetime)是从onStartCommand()或onBind()被调用开始,它们各自处理由startService()或bindService()方法传过来的Intent对象。
(3)android绑定service扩展阅读
service整体的生命时间是从onCreate()被调用开始,到onDestroy()方法返回为止。和activity一样,service在onCreate()中进行它的初始化工作,在onDestroy()中释放残留的资源。
比如,一个音乐播放service可以在onCreate()中创建播放音乐的线程,在onDestory()中停止这个线程。onCreate()和onDestroy()会被所有的service调用,不论service是通过startService()还是bindService()建立。
Ⅳ Android Service 为什么要绑定服务 仅仅是因为要获取服务中的方法吗
Android中Service是运行在后台的东西,级别与activity一样。
既然说service是运行在后台的服务,那么它就是不可见的,没有界面的东西。
你可以启动一个服务Service来播放音乐,或者记录你地理信息位置的改变,或者启动一个服务来运行并一直监听某种动作。
Service和其他组件一样,都是运行在主线程中,因此不能用它来做耗时的请求或者动作。你可以在服务中开一一个线程,在线程中做耗时动作。
服务一般分为两种:
1:本地服务,Local Service 用于应用程序内部。在Service可以调用Context.startService()启动,调用Context.stopService()结束。在内部可以调用Service.stopSelf() 或 Service.stopSelfResult()来自己停止。无论调用了多少次startService(),都只需调用一次stopService()来停止。
2:远程服务, Remote Service 用于android系统内部的应用程序之间。可以定义接口并把接口暴露出来,以便其他应用进行操作。客户端建立到服务对象的连接,并通过那个连接来调用服务。调用Context.bindService()方法建立连接,并启动,以调用 Context.unbindService()关闭连接。多个客户端可以绑定至同一个服务。如果服务此时还没有加载,bindService()会先加载它。
提供给可被其他应用复用,比如定义一个天气预报服务,提供与其他应用调用即可。
3.Service的生命周期
context.startService() ->onCreate()- >onStart()->Service running--调用context.stopService() ->onDestroy()
context.bindService()->onCreate()->onBind()->Service running--调用>onUnbind() -> onDestroy()
从上诉可以知道分别对应本地的,,以及远程的,也对应不同的方式启动这个服务。
4.如果你Activity不绑定服务,那么就无法与远程服务进行通信
例如你要调用其它应用的服务(进程之间的通信)
有关更多的RPC通信建议查看android官网的API
Ⅳ Android中Service服务有哪些
Service分为本地服务(LoaclService)和远程服务(RemoteService)。
本地服务:用于应用程序内部,这也与客户端(可以理解也activity)进行通信就很方便。
远程服务:用于android系统内部的应用程序之间。
Ⅵ android之服务的启动服务和绑定服务的区别
1 通过startService
Service会经历 onCreate --> onStart
stopService的时候直接onDestroy
如果是 调用者 直接退出而没有调用stopService的话,Service会一直在后台运行。
下次调用者再起来仍然可以stopService。
2 通过bindService
Service只会运行onCreate, 这个时候 调用者和Service绑定在一起
调用者退出了,Srevice就会调用onUnbind-->onDestroyed
所谓绑定在一起就共存亡了。
Ⅶ 安卓编程中 怎么把activity和service绑定
在service设置定时器,每隔一段时间检测电量并改变textview的内容。这里的textview是activity布局文件中的textview。
Ⅷ Android service与activity绑定调用问题
调用startactivity到另一个activity之后,原来的Activity会暂停,如果内存不够就会被kill掉。绑定的service也会调用destroy方法,因为你的service是用bindservice启动的。所以你的想法还是用startservice方法启动service然后再用广播进行activity与service之间的数据交换比较简单。
Ⅸ Android中如何启用Service,如何停用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()的时候要注意这点。
Ⅹ 如何让android的service一直在后台运行
1、把service和activity分开,让service开机启动。
2、设置一个broadcast receiver接受开机信号,使用RECEIVE_BOOT_COMPLETED的permission, 然后启动service。
3、activity启动后绑定到service上,通过ipc机制通信,acitivity结束后松绑。
4、注意安装后要手动启动service,不会自动启动,之后重启手机后才会随开机启动。
5、在内存低的时候系统会自动清理进程,这时候后台service可能会被杀掉。
6、可以在onStartCommand中返回START_STICKY,这样系统有足够多资源的时候,就会重新开启service。
7、以上不需要NDK,直接用SDK开发就可以了。
8、下面是一个服务的代码仅供参考:
public class MyService extends Service {
private static final String TAG = "MyService";
MediaPlayer player;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
Toast.makeText(this, "My Service created", Toast.LENGTH_LONG).show();
Log.i(TAG, "onCreate");
player = MediaPlayer.create(this, R.raw.braincandy);
player.setLooping(false);
}
@Override
public void onDestroy() {
Toast.makeText(this, "My Service Stoped", Toast.LENGTH_LONG).sho();
Log.i(TAG, "onDestroy");
player.stop();
}
@Override
public void onStart(Intent intent, int startid) {
Toast.makeText(this, "My Service Start", Toast.LENGTH_LONG).show();
Log.i(TAG, "onStart");
}
}