#服务 服务不能new,new出来的只是一个普通java对象不是服务,只能够通过Intent和startService(intent)创建服务。 ###开启方式 * startService,onCreate-onStartCommand-onDestroy没有与绑定相关的方法。 * 该方法启动的服务所在的进程属于服务进程, * Activity一旦启动服务,服务就跟Activity一毛钱关系也没有了,只不过运行在同一个进程而已。 * bindService,onCreate-onBind-onUnbind-onDestroy。 *绑定后再绑定不会执行任何操作,解绑后再解绑会出异常。 * 该方法启动的服务所在进程不属于服务进程 * Activity与服务建立连接,Activity一旦死亡,服务也会死亡
package com.itheima.runservice; import android.os.Bundle; import android.os.IBinder; import android.app.Activity; import android.app.Service; import android.content.ComponentName; import android.content.Intent; import android.content.ServiceConnection; import android.view.Menu; import android.view.View; public class MainActivity extends Activity { private Intent intent; private MyServiceConn conn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); intent = new Intent(this, MyService.class); conn = new MyServiceConn(); } public void start(View v){ startService(intent); } public void stop(View v){ stopService(intent); } public void bind(View v){ //绑定服务 bindService(intent, conn, BIND_AUTO_CREATE); } public void unbind(View v){ //解绑服务 unbindService(conn); } class MyServiceConn implements ServiceConnection{ //服务连接成功时,此方法调用 @Override public void onServiceConnected(ComponentName name, IBinder service) { } //服务失去连接时,此方法调用 @Override public void onServiceDisconnected(ComponentName name) { } } } //清单文件<service android:name="com.itheima.runservice.MyService"></service>
package com.itheima.runservice; import android.app.Service; import android.content.Intent; import android.os.IBinder; public class MyService extends Service { //绑定时调用 @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub System.out.println("bind方法"); return null;//返回Activity和MyService的中间人对象 } //解绑时调用 @Override public boolean onUnbind(Intent intent) { // TODO Auto-generated method stub System.out.println("unbind方法"); return super.onUnbind(intent); } @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); System.out.println("create方法"); } @Override public int onStartCommand(Intent intent, int flags, int startId) { // TODO Auto-generated method stub System.out.println("start方法"); return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { // TODO Auto-generated method stub System.out.println("destroy方法"); super.onDestroy(); } }