Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 高級開發 >> 詳細描述Android服務解說

詳細描述Android服務解說

編輯:高級開發

開放手機聯盟的成立和 android服務 的推出是對現狀的重大改變,在帶來初步效益之前,還需要不小的耐心和高昂的投入,谷歌將繼續努力,讓這些服務變得更好,同時也將添加更有吸引力的特性、應用和服務。

一,android服務中的Service與調用者在同一線程,所以要是耗時的操作要在Service中新開線程。
二,android的Service中,主要是實現其onCreate,onStart, onDestroy,onBind,onUnBind幾個函數,來實現我們所需要的功能

簡單的調可以在調用者對象中使用Context.startService來調用,以Intent為參數,當然,Intent搜索,匹配目標的方式與以前在《Intent使用》中方式一樣。

下面來看一段例程:

  1. package test.pHello;
  2. import android.app.Activity;
  3. import android.content.ComponentName;
  4. import android.content.Context;
  5. import android.content.Intent;
  6. import android.content.ServiceConnection;
  7. import android.Net.Uri;
  8. import android.os.Bundle;
  9. import android.os.IBinder;
  10. import android.vIEw.Menu;
  11. import android.vIEw.MenuItem;
  12. import android.widget.TextVIEw;
  13. public class HelloActivity extends Activity {
  14. ITestService mService = null;
  15. ServiceConnection sconnection = new ServiceConnection()
  16. {
  17. public void onServiceConnected(ComponentName name, IBinder service)
  18. {
  19. mService = (ITestService)service;
  20. if (mService != null)
  21. {
  22. mService.showName();
  23. }
  24. }
  25. public void onServiceDisconnected(ComponentName name)
  26. {
  27. }
  28. };
  29. @Override
  30. public boolean onCreateOptionsMenu(Menu menu) {
  31. // TODO Auto-generated method stub
  32. super.onCreateOptionsMenu(menu);
  33. menu.add(0, Menu.FIRST+1, 1, "OpenActivity");
  34. menu.add(0, Menu.FIRST+2, 2, "StartService");
  35. menu.add(0, Menu.FIRST+3, 3, "StopService");
  36. menu.add(0, Menu.FIRST+4, 4, "BindService");
  37. return true;
  38. }
  39. @Override
  40. public boolean onOptionsItemSelected(MenuItem item) {
  41. // TODO Auto-generated method stub
  42. super.onOptionsItemSelected(item);
  43. switch(item.getItemId())
  44. {
  45. case Menu.FIRST + 1:
  46. {
  47. this.setTitle("Switch Activity");
  48. Intent i = new Intent();
  49. i.setAction("test_action");
  50. if (Tools.isIntentAvailable(this,i))
  51. this.startActivity(i);
  52. else
  53. this.setTitle("the Intent is unavailable!!!");
  54. break;
  55. }
  56. case Menu.FIRST + 2:
  57. {
  58. this.setTitle("Start Service");
  59. //Intent i = new Intent(this, TestService.class);
  60. Intent i = new Intent();
  61. i.setAction("start_service");
  62. this.startService(i);
  63. break;
  64. }
  65. case Menu.FIRST + 3:
  66. {
  67. this.setTitle("Stop Service");
  68. Intent i = new Intent(this, TestService.class);
  69. this.stopService(i);
  70. break;
  71. }
  72. case Menu.FIRST + 4:
  73. {
  74. this.setTitle("Bind Service!");
  75. Intent i = new Intent(this, TestService.class);
  76. this.bindService(i, this.sconnection, Context.BIND_AUTO_CREATE);
  77. break;
  78. }
  79. }
  80. return true;
  81. }
  82. @Override
  83. public void onCreate(Bundle savedInstanceState) {
  84. super.onCreate(savedInstanceState);
  85. this.setContentVIEw(R.layout.main);
  86. }
  87. }

編譯執行,你會發現,是先執行onCreate,然後再執行onBind,在調用者的Context.bindService返回時,ServiceConnection的OnConnected並沒有馬上被執行。android服務遠程綁定:上述綁定是在調用者與Service在同一個應用程序中的情況,如果分處在不同的程序中,那麼,調用方式又是一另一種情況。我們來看一下。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved