within my main activity I have the following code:
EditText usernameText;
EditText passwordText;
public void sendLogin (View loginview){
Intent i = new Intent(this, NetworkService.class);
startService(i);
}
Currently, this just sends an intent to the NetworkService, which is handled as follows (truncated):
public class NetworkService extends IntentService {
public NetworkService() {
super("NetworkService");
}
protected void onHandleIntent(Intent i) {
/* HTTP CONNECTION STUFF */
String login = URLEncoder.encode("Username", "UTF-8") + "=" + URLEncoder.encode("XXX", "UTF-8");
login += "&" + URLEncoder.encode("Password", "UTF-8") + "=" + URLEncoder.encode("XXX", "UTF-8");
}
}
Now, what I need to figure out, is how to pass those usernameText
and passwordText
values through to the NetworkService
into the 'XXX', but ALSO within the NetworkService
, I intend (no pun intended), to have it handle multiple intents from various places, one from a login, one from retrieving some information on users using the logon token, for instance.
It's where all my networking will be contained. I was instructed this was the best practise within android applications, to keep the networking separate.
My question is: What is the best way of sending those two variables to the NetworkService
and also how, within the onHandleIntent
of the NetworkService
, do I separate the code to only do what I'm asking it to (login, fetch user information, fetch location data etc)?
Sorry if the answer is a simple one, but I'm very new to application programming.
Thanks
1. For sending
usernameText
andpasswordText
toNetworkService
do this....2. To receive the data in
NetworkService
do this....Then in your IntentService:
IntentServices are designed to handle several requests sent to it. In other words, if you keep sending intents using
startService(intent)
, your NetworkService will keep getting itsonHandleIntent
method called. Under the hood, it has a queue of intents that it will work through until it is finished. So if you keep sending intents the way you are currently, but with certain flags set through theputExtra
methods, then you can detect what your NetworkService should do and act appropriately. e.g. set a boolean extra to your intent calledlogin
, in your intentservice look for that flag being set viaintent.getBooleanExtra("login")
. If true, do your login stuff, else look for other flags you set.