Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- REMOTE SERVICE ANDROID JAVA PAKE AIDL
- SAUCE
- http://www.zubha-labs.com/android-remote-services
- http://code.google.com/p/localservice/
- cara kerja service ke tempat lain
- cara kerjanya yaitu
- Pendekatannya emang kayak client server
- 1.BAGIAN SERVER
- 1.1.bagian service
- nah yang pertama buat .aidl
- di BINDER di bagian SERVICE
- @Override
- public int onStartCommand(Intent intent, int flags, int startId) {
- super.onStartCommand(intent, flags, startId);
- return Service.BIND_AUTO_CREATE;
- }
- @Override
- public IBinder onBind(Intent arg0) {
- return new SumServiceImpl();//sebenarnya ini adalah class stub
- }
- nah setelah itu baru buat Stubnya yaitu dengan cara
- dan keluar semua isi interfacenya
- public class owlService extends IowlService.Stub {}
- 1.2.bagian XML
- bagian ini nih emang punya skill khusus buat jalanin service.
- jadi yang harus di lakukan adalah daftarin service dan aidl
- caranya dengan memasukkan lokasi-lokasi dari kedua bagian tersebut
- contohnya yaitu :
- <service android:name="zing.service.android.zingService"
- android:exported="true">
- <intent-filter>
- <action android:name="zing.service.Interface.IowlService" />
- </intent-filter>
- </service>
- tapi jangan lupa juga dengan isi permission nya misalnya kadang-kadang kan lupa :
- <uses-permission android:name="android.permission.INTERNET" />
- 2.BAGIAN CLIENT
- nah di bagian client copy paste stubnya
- bikin koneksi ke service berdasarkan stubnya
- private ServiceConnection mServiceConn = new ServiceConnection() {
- @Override
- public void onServiceConnected(ComponentName name, IBinder service) {
- Log.v("SERVICE CONNECTED", "SERVICE CONNECTED");
- mSumService = ISumService.Stub.asInterface(service);
- Toast.makeText(getApplicationContext(), "service connected",
- Toast.LENGTH_LONG);
- }
- nge binding si bagian AIDL
- bindService(new Intent(ISumService.class.getName()), mServiceConn,
- Context.BIND_AUTO_CREATE);
- nge handler (ini yang ngebedain aplikasi gw sama aplikasi lainya)
- HandlerThread hthr = new HandlerThread(
- "StartedSumLooperService2Thread",
- Process.THREAD_PRIORITY_BACKGROUND);
- hthr.start();
- mServiceLooper = hthr.getLooper();
- mServiceHandler = new ServiceHandler(mServiceLooper);
- mThreadArgs = new Bundle();
- SAATNYA BERAKSI
- kirimi surat ke si handler, tujuannya biar dia milih mau ngejalanin apa aja
- mThreadMsg = mServiceHandler.obtainMessage();
- mThreadArgs.clear();
- mThreadArgs.putBoolean("catsum", true);
- mThreadMsg.obj = mThreadArgs;
- Log.d("btnCatalanSum", "hiss hiss");
- mServiceHandler.sendMessage(mThreadMsg);
- kalo mau ngasih masukan ke handler ini :
- mThreadArgs.putLong("n", Long.parseLong(mNEdtTxt.getText().toString()));
- kalo mau ngedapetin masukan dari handler ini :
- args.getLong("n")
- Lakukan delay kalo mau nampilin ke GUI
- try {
- Thread.sleep(500);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- tampilin lah si itu tampilan
- ((TextView) findViewById(R.id.file_code))
- .setText("your file code : " + s);
- ((EditText) findViewById(R.id.value1)).setText(s);
- pemilihan aksi aksi dipilih dengan cara sebagai berikut:
- SERVICEnya apaan terus, nama service yang terdapat pada AIDL nya
- mSumService.getZingId();
- private ISumService mSumService;
- NGE UNBINDING
- udah sampe disitu aja bagian client, owalahh puyeng kaka
- unbindService(mServiceConn);
- mServiceConn = null;
- PERINGATAN :
- 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