Android优点:1.开源特性,得到众多厂商的支持2.软件发展很快3.界面UI、系统优化不错Android缺点:1.版本过多,升级过快2.用户体验不一致

解决方案 »

  1.   

    服务不能自己运行,需要通过调用Context.startService()或Context.bindService()方法启动服务。这两个方法都可以启动Service,但是它们的使用场合有所不同。使用startService()方法启用服务,调用者与服务之间没有关连,即使调用者退出了,服务仍然运行。使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止,大有“不求同时生,必须同时死”的特点。
    如果打算采用Context.startService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onStart()方法。如果调用startService()方法前服务已经被创建,多次调用startService()方法并不会导致多次创建服务,但会导致多次调用onStart()方法。采用startService()方法启动的服务,只能调用Context.stopService()方法结束服务,服务结束时会调用onDestroy()方法。stopService()和stopSelf()都可以停止通过startService()方式启动的service。如果打算采用Context.bindService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onBind()方法。这个时候调用者和服务绑定在一起,调用者退出了,系统就会先调用服务的onUnbind()方法,接着调用onDestroy()方法。如果调用bindService()方法前服务已经被绑定,多次调用bindService()方法并不会导致多次创建服务及绑定(也就是说onCreate()和onBind()方法并不会被多次调用)。如果调用者希望与正在绑定的服务解除绑定,可以调用unbindService()方法,调用该方法也会导致系统调用服务的onUnbind()-->onDestroy()方法。
    使用bindService方法启动service,在activity结束时,service到底退不退出,这个还不确定,需要验证,有人说activity退出,不会影响service。
      

  2.   

    注册BroadCast Receiver有两种方式:
    1.在AndroidManifest.xml文件当中进行注册,这种方式是最常用的
        <receiver android:name="">
          <intent-filter>
            <action android:name=""/>
          </intent-filter>
        </receiver>
    2.在代码当中直接进行注册,这种方式不是很推荐,但是有时候用起来很灵活
        IntentFilter filter=new IntentFilter("此处为action的名字");
        //然后创建一个自己定义的BroadCastReceiver类的对象 如:
         EoeAndroidReceiver eoeAndroidReceiver=new EoeAndroidReceiver();
         //注册
          registerReceiver(eoeAndroidReceiver,filter);
    如果想将一个已经注册的BroadCastReceiver注销的话 可以使用下面的代码:
         unregisterReceiver(br);//括号参数为你想注销的BroadCastReceiver对象
      

  3.   

    注册广播有几种方式,这些方式有何优缺点?请谈谈Android引入广播机制的用意。
    1、在AndroidManifest.xml文件当中进行注册
       不需要启动程序也可以监听广播但有时显得不灵活;
    2、在代码当中直接进行注册
       需要启动程序代码才可以监听,有时比较灵活,如当希望在某个Activity启动时监听广播,当这Activity死亡时不监听,即可用这种方法。