By: Fazal in J2ME Tutorials on 2007-09-22
This article describes using the getPosition() method to get the GPS position in the background. I call this method from a separate thread like documentation recomends, so I can show a 'Cancel' button in the display in case I want to cancel the GPS request. The thing is that I don't know how to make getPosition() function to stop requesting. I want getPosition() to stop executing when I push 'Cancel' button. How do I do that? I'm sure there is a way, because the built-in app to get GPS position stops when I cancel.
If this is your problem then here are ways to do it.
The developer guide (p 489) says that closing the PositionConnection (from another thread) will cause the call to unblock. I have not done this in a while and don't have my code handy but if this doesn't work someone will speak up. At any rate, if you make the Cancel commandAction event close the PositionConnection, then that should do it.
You could always make "cancel" do nothing except return back to your main screen, and allow the connection attempt to continue in the background. There are many ways to code this, but the bottom line is that if you think a position may be needed a short time later, or a relatively recent position will suffice, you could let the connection attempt complete in the background, and if it completes successfully, store the result.
If you think the user might attempt a position again a short time later, this would be a great strategy because maybe they just didn't wait long enough. You can silently continue to try to get a connection in the background. If you are successful you can decide whether or not to keep the receiver "hot" by making additional requests, until the user tries again or you stop after a while to conserve battery. Or when you get the fix you can notify the user that it is available. If you don't get the fix, no biggie, the user will simply try again. If you are still trying to get the fix when the user tries again, you should be able to cancel the current fix by closing the PositionConnection and then reopening it. Again, the idea here is to separate UI activity from location activity and to provide an event communication mechanism between the two. There are many on this list who can offer something more precise.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
- Your name, rating, website address, town, country, state and comment will be publicly displayed if entered.
- Aside from the data entered into these form fields, other stored data about your comment will include:
- Your IP address (not displayed)
- The time/date of your submission (displayed)
- Your email address will not be shared. It is collected for only two reasons:
- Administrative purposes, should a need to contact you arise.
- To inform you of new comments, should you subscribe to receive notifications.
- A cookie may be set on your computer. This is used to remember your inputs. It will expire by itself.
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
- Although the administrator will attempt to moderate comments, it is impossible for every comment to have been moderated at any given time.
- You acknowledge that all comments express the views and opinions of the original author and not those of the administrator.
- You agree not to post any material which is knowingly false, obscene, hateful, threatening, harassing or invasive of a person's privacy.
- The administrator has the right to edit, move or remove any comment for any reason and without notice.
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Most Viewed Articles (in J2ME )
Latest Articles (in J2ME)
- Data Science
- React Native
- Cloud Computing
- Java Beans
- Mac OS X
- Office 365
- Tech Reviews