Service比Activity具备更高的优先级
Service的应用形式

  1. 启动形式
  2. 绑定形式
    应用通过服务链接(Connction)实现
    应用Service的组件通过Context.bindService()建设连贯,通过Context.unbindService()断开连接

如何实现Service()?

public class RandomService extends Service{        @Override    public void onCreate() {        super.onCreate();       //实现代码    }        @Override    public void onStart(Intent intent, int startId) {          super.onStart(intent, startId);         //实现代码    }        @Override    public void onDestroy() {         super.onDestroy();        //实现代码     }             @Override    public IBinder onBind(Intent intent) {        return null;    }}

Service被绑定后调用的函数,可能返回Service的对象实例:

public IBinder onBind(Intent intent){return Service的对象实例}

Service的对象实例怎么写?

实现Service类须要在AndroidManifest.xml注册服务

<service android:name=".RandomService"/>

在其余组件启动服务

显示启动

final Intent serviceIntent = new Intent(this, RandomService.class);startService(serviceIntent);stopService(serviceIntent);

隐式启动

final Intent serviceIntent = new Intent();serviceIntent.setAction("edu.hrbeu.RandomService");//传递参数是Service 的包名地位

除此之外还要在AndroidManifest.xml申明,让启动找到相应的服务

<service android:name=".RandomService">    <intent-filter>          <action android:name="edu.hrbeu.RandomService"/>     </intent-filter></service>

Activity,Service,BroadcastReceiver都是工作在主线程
如何创立子线程?

  1. 实现java的Runnable接口,重载run()函数
  2. 创立Thread对象,将Runnable对象作为参数传递给Thread对象
  3. 启动线程是Thread对象调用start()办法;
  4. 如何终止线程?调用interrupt()办法;

如何应用线程中的数据更新用户界面?

用Handler更行用户界面

新建Handler实例,通过post()办法将Runnable对象从后盾线程发送到GUI线程的音讯队列

private static Handler handler = new Handler();public static void UpdateGUI(double refreshDouble){        randomDouble = refreshDouble;        handler.post(RefreshLable);    }        private static Runnable RefreshLable = new Runnable(){        @Override        public void run() {            labelView.setText(String.valueOf(randomDouble));        }    };
  • 如何让一般函数能够变成线程函数?实现接口Runnable()中对应的run()办法,函数的实现的办法写在run()中。
  • 启动线程须要创立Thread对象,将线程函数作为参数传递给Thread对象,通过Thread对象操纵线程的启动和暂停
  • 将线程中的数据更新到用户界面,就是借助Handler,先创立一个Handler实例,handler()通过post()办法:handelr.post([线程函数名]) ,将线程函数作为参数传递过来,这样线程函数就会被退出到GUI的线程音讯队列中,期待被执行。

如何绑定服务?

final Intent serviceIntent = new Intent(SimpleMathServiceDemoActivity.this,MathService.class);bindService(serviceIntent,mConnection,Context.BIND_AUTO_CREATE);private ServiceConnection mConnection = new ServiceConnection() {        @Override        public void onServiceConnected(ComponentName name, IBinder binder) {            mathService = ((MathService.LocalBinder).binder).getService();        }        @Override        public void onServiceDisconnected(ComponentName name) {            mathService = null;            }    };