forked from hussien89aa/AndroidTutorialForBeginners
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
hussienalrubaye
committed
Oct 2, 2016
1 parent
33e9cb1
commit 78bc37a
Showing
2 changed files
with
93 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
public class LocalService extends Service { | ||
// Binder given to clients | ||
private final IBinder mBinder = new LocalBinder(); | ||
// Random number generator | ||
private final Random mGenerator = new Random(); | ||
|
||
/** | ||
* Class used for the client Binder. Because we know this service always | ||
* runs in the same process as its clients, we don't need to deal with IPC. | ||
*/ | ||
public class LocalBinder extends Binder { | ||
LocalService getService() { | ||
// Return this instance of LocalService so clients can call public methods | ||
return LocalService.this; | ||
} | ||
} | ||
|
||
@Override | ||
public IBinder onBind(Intent intent) { | ||
return mBinder; | ||
} | ||
|
||
/** method for clients */ | ||
public int getRandomNumber() { | ||
return mGenerator.nextInt(100); | ||
} | ||
} | ||
|
||
//start service | ||
|
||
public class BindingActivity extends Activity { | ||
LocalService mService; | ||
boolean mBound = false; | ||
|
||
@Override | ||
protected void onCreate(Bundle savedInstanceState) { | ||
super.onCreate(savedInstanceState); | ||
setContentView(R.layout.main); | ||
} | ||
|
||
@Override | ||
protected void onStart() { | ||
super.onStart(); | ||
// Bind to LocalService | ||
Intent intent = new Intent(this, LocalService.class); | ||
bindService(intent, mConnection, Context.BIND_AUTO_CREATE); | ||
} | ||
|
||
@Override | ||
protected void onStop() { | ||
super.onStop(); | ||
// Unbind from the service | ||
if (mBound) { | ||
unbindService(mConnection); | ||
mBound = false; | ||
} | ||
} | ||
|
||
/** Called when a button is clicked (the button in the layout file attaches to | ||
* this method with the android:onClick attribute) */ | ||
public void onButtonClick(View v) { | ||
if (mBound) { | ||
// Call a method from the LocalService. | ||
// However, if this call were something that might hang, then this request should | ||
// occur in a separate thread to avoid slowing down the activity performance. | ||
int num = mService.getRandomNumber(); | ||
Toast.makeText(this, "number: " + num, Toast.LENGTH_SHORT).show(); | ||
} | ||
} | ||
|
||
/** Defines callbacks for service binding, passed to bindService() */ | ||
private ServiceConnection mConnection = new ServiceConnection() { | ||
|
||
@Override | ||
public void onServiceConnected(ComponentName className, | ||
IBinder service) { | ||
// We've bound to LocalService, cast the IBinder and get LocalService instance | ||
LocalBinder binder = (LocalBinder) service; | ||
mService = binder.getService(); | ||
mBound = true; | ||
} | ||
|
||
@Override | ||
public void onServiceDisconnected(ComponentName arg0) { | ||
mBound = false; | ||
} | ||
}; | ||
} |