Advertisement
rraito

REMOTE SERVICE ANDROID JAVA PAKE AIDL

Mar 28th, 2012
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.89 KB | None | 0 0
  1. REMOTE SERVICE ANDROID JAVA PAKE AIDL
  2.  
  3.  
  4. SAUCE
  5. http://www.zubha-labs.com/android-remote-services
  6. http://code.google.com/p/localservice/
  7.  
  8. cara kerja service ke tempat lain
  9. cara kerjanya yaitu
  10.  
  11. Pendekatannya emang kayak client server
  12.  
  13. 1.BAGIAN SERVER
  14.  
  15. 1.1.bagian service
  16. nah yang pertama buat .aidl
  17. di BINDER di bagian SERVICE
  18. @Override
  19. public int onStartCommand(Intent intent, int flags, int startId) {
  20. super.onStartCommand(intent, flags, startId);
  21. return Service.BIND_AUTO_CREATE;
  22. }
  23.  
  24. @Override
  25. public IBinder onBind(Intent arg0) {
  26. return new SumServiceImpl();//sebenarnya ini adalah class stub
  27. }
  28.  
  29. nah setelah itu baru buat Stubnya yaitu dengan cara
  30. dan keluar semua isi interfacenya
  31. public class owlService extends IowlService.Stub {}
  32.  
  33. 1.2.bagian XML
  34. bagian ini nih emang punya skill khusus buat jalanin service.
  35. jadi yang harus di lakukan adalah daftarin service dan aidl
  36. caranya dengan memasukkan lokasi-lokasi dari kedua bagian tersebut
  37. contohnya yaitu :
  38. <service android:name="zing.service.android.zingService"
  39. android:exported="true">
  40. <intent-filter>
  41. <action android:name="zing.service.Interface.IowlService" />
  42. </intent-filter>
  43. </service>
  44. tapi jangan lupa juga dengan isi permission nya misalnya kadang-kadang kan lupa :
  45. <uses-permission android:name="android.permission.INTERNET" />
  46.  
  47. 2.BAGIAN CLIENT
  48. nah di bagian client copy paste stubnya
  49.  
  50. bikin koneksi ke service berdasarkan stubnya
  51. private ServiceConnection mServiceConn = new ServiceConnection() {
  52. @Override
  53. public void onServiceConnected(ComponentName name, IBinder service) {
  54. Log.v("SERVICE CONNECTED", "SERVICE CONNECTED");
  55. mSumService = ISumService.Stub.asInterface(service);
  56. Toast.makeText(getApplicationContext(), "service connected",
  57. Toast.LENGTH_LONG);
  58.  
  59. }
  60.  
  61. nge binding si bagian AIDL
  62. bindService(new Intent(ISumService.class.getName()), mServiceConn,
  63. Context.BIND_AUTO_CREATE);
  64.  
  65.  
  66. nge handler (ini yang ngebedain aplikasi gw sama aplikasi lainya)
  67. HandlerThread hthr = new HandlerThread(
  68. "StartedSumLooperService2Thread",
  69. Process.THREAD_PRIORITY_BACKGROUND);
  70. hthr.start();
  71. mServiceLooper = hthr.getLooper();
  72. mServiceHandler = new ServiceHandler(mServiceLooper);
  73. mThreadArgs = new Bundle();
  74.  
  75.  
  76.  
  77. SAATNYA BERAKSI
  78.  
  79. kirimi surat ke si handler, tujuannya biar dia milih mau ngejalanin apa aja
  80. mThreadMsg = mServiceHandler.obtainMessage();
  81. mThreadArgs.clear();
  82. mThreadArgs.putBoolean("catsum", true);
  83. mThreadMsg.obj = mThreadArgs;
  84. Log.d("btnCatalanSum", "hiss hiss");
  85. mServiceHandler.sendMessage(mThreadMsg);
  86.  
  87. kalo mau ngasih masukan ke handler ini :
  88. mThreadArgs.putLong("n", Long.parseLong(mNEdtTxt.getText().toString()));
  89.  
  90. kalo mau ngedapetin masukan dari handler ini :
  91. args.getLong("n")
  92.  
  93. Lakukan delay kalo mau nampilin ke GUI
  94. try {
  95. Thread.sleep(500);
  96. } catch (InterruptedException e) {
  97. // TODO Auto-generated catch block
  98. e.printStackTrace();
  99. }
  100. tampilin lah si itu tampilan
  101. ((TextView) findViewById(R.id.file_code))
  102. .setText("your file code : " + s);
  103. ((EditText) findViewById(R.id.value1)).setText(s);
  104.  
  105. pemilihan aksi aksi dipilih dengan cara sebagai berikut:
  106. SERVICEnya apaan terus, nama service yang terdapat pada AIDL nya
  107.  
  108. mSumService.getZingId();
  109. private ISumService mSumService;
  110.  
  111.  
  112. NGE UNBINDING
  113. udah sampe disitu aja bagian client, owalahh puyeng kaka
  114. unbindService(mServiceConn);
  115. mServiceConn = null;
  116.  
  117.  
  118. PERINGATAN :
  119. nih metode remote service sering terjadi error-error ngak jelas yang bikin para newbie ngak sabaran kayak gue jadi pada puyeng make nih service jadinya yang harus dilakukan adalah JALANIN APLIKASINYA LAGI. dan errornya jadinya hilang karena saya duga sih yang pertama si service sebelumnya ketimpa dengan service yanbg sekarang jadinya buat ngilangin service tersebut yah cara yang paling OKE adalah dengan cara jalanin si servicenya lagi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement