Android :: How To Establish A Two-way Communication Between Activity And Service In Different Process
Mar 19, 2010
I'm working on establishing a two-way communication between an Activity and a Service which runs in a different process.
Querying the process from the Activity is no big deal. But I want the process to notify the Activity on events. The idea behind it is this: the service runs independently from the actual app. It queries a webserver periodically. If a new task is found on the webserver the process should notify the activity.
I found this thread over at AndDev.org but it doesn't seem to work for me. I've been messing around with BroadcastReceiver. I've implemented an interface which should notify the Activity but the problem is that the listener is always null since the Broadcast from the process is done via Intent, hence the class that extends BroadcastReceiver will be newly instantiated.
How can I establish a 2-way communication? This has to be possible.
View 3 Replies
Dec 13, 2009
I'm having an issue with inter-process communication with a Service and Notifications
The structure of my application is as follow: - ListActivity (TunnelDroid), once the user presses a listitem it will start a Service. The ListActivity is binded to the service for intra-process communication
- Service (TunnelManagerService): running in the background. This service will add a (permanent) Notification in the statusbar. Using a Handler I sometimes need to communicate with the ListActivity (to show GUI Dialogs)
- Notification: Once this notification is clicked it should open the ListActivity.
To add the action when the user touches the notification I use the following code: notificationIntent.setClassName("net.sourceforge.tunneldroid","net.sourceforge.tunneldroid.TunnelDroid"); Then I use the intent to create the notification.
Unfortunately a new Intent is opened. When I press the back button the original ListActivity is shown. So I have two instances of my same class/list.
How could I make sure the original ListActivity is opened when the user touches the Notification?
It's OK for me if the original ListActivity was previously destroyed, but I cannot have two instances. The problem is that the Handler in the Service has a reference to the ListActivity (PARENT_ACTIVITY), so if another instance is created I have invalid references. I could overwrite the PARENT_ACTIVITY, but then when the user presses the back button I have an instance with no correct link to my Service resulting in a crash/nullpointer.
The complete source can be found here: http://tunneldroid.svn.sourceforge.net/viewvc/tunneldroid/tunneldroid. Attached you can find a drawing of (most of the) inter-process communication. Could someone point me in the right direction?
View 3 Replies
View Related
Oct 18, 2010
I am a beginner in Android and i want to establish a serial port communication(UART RS232) library in Android Framework Layer. My applications want to use that libary to send messages to some serial port devices. here we wan to use android as a embedded device and not a mobile device. can you suggest me how to establish a seria communication and to add that library on android framework layer.
View 3 Replies
View Related
Aug 2, 2010
Whenever the memory needs to be reclaimed, the process is being killed by Activity Manager Service in killPidsForProcess. I have a back button in my activity window on right corner of the title bar.
I want to kill the activity completely on clicking the close button. Can I reuse the same function and will it have any major effect? Please help me out in this.
View 3 Replies
View Related
Jun 21, 2010
Is there a way to establish a listener on the process of scrolling in a ScrollView or a HorizontalScrollView?
View 1 Replies
View Related
Jul 21, 2010
When you do a Thread.currentThread().getId(), is the resulting thread id scoped per process or scoped to the current Activity/Service?
View 1 Replies
View Related
Mar 30, 2010
I have a design problem with my Android components.
My activity is starting a service which is doing the work in the background. What I want is that the service informs the activity about state changes. How can I do this?
Normally I would add an observer but the activity has no reference to the service. Then I was thinking to take AIDL but this is more for inter-process communication.
How is it possible that the service informs the activity about state changes? Both are running in the same process. What can you recommend?
View 9 Replies
View Related
Mar 19, 2009
Just say I have two applications, each with one activity running on separate processes and I want to send a simple string between them. For the purposes of this example, let us say I have a button that sends whatever is typed into an EditText view to the other application where it is then displayed. Do I have to expose a remote interface via a service that co-resides between the two applications? Or can I do something simpler (is there a way to pass data between processes without defining your interface using AIDL)? Thanks for clearing this up for me, as I seem to be struggling with performing IPC at the moment. I'm pretty sure I have to use the Android IPC path and generate a remote interface using AIDL. I'm just not sure about the binding to service part.
View 7 Replies
View Related
Mar 18, 2009
At the moment i have the following problem. I try to establish a connect to a SOAP-service. Therefore i need basicauth via http. I use ksoap2 and HttpTransportBasicAuth. The problem is, I do not know how i can start a call when i use HttpTransportBasicAuth because the function "call" is not available.
View 2 Replies
View Related
Feb 21, 2009
At a certain point in my program, when I'm completely done with my service, my activity executes unbindService() and stopService() -- yet the process persists. I can tell that it persists because I run "ps" in "adb -e shell":
CODE:.............
"adb logcat", I can show you the sequence of events:
ACTIVITY: context.unbindService(serviceConnection);
SERVICE: onUnbind();
ACTIVITY: stopService(serviceIntent); & returns true!
SERVICE: onDestroy();
First, my activity calls unbindService(serviceConnection). According to the documentation, unbindService() will "Disconnect from an application service. You will no longer receive calls as the service is restarted, and the service is now allowed to stop at any time." So that is fine, and it is happening.
Appropriately, we see the onUnbind() call happen on the service side. According to the documentation, onUnbind() is called when "all clients have disconnected from a particular interface published by the service." So this confirms the correct service connection is being passed, and that the service is responding accordingly.
Next, my activity calls stopService(serviceIntent), and returns true. According to the documentation, stopService() does the following: "If there is a service matching the given Intent that is already running, then it is stopped and true is returned; else false is returned." Again, this is happening and returning true.
In response, the service's onDestroy() method is called. According to the documentation, onDestroy() is "Called by the system to notify a Service that it is no longer used and is being removed. The service should clean up any resources it holds (threads, registered receivers, etc) at this point. Upon return, there will be no more calls in to this Service object and it is effectively dead."
At this point I expect the process to disappear from the process table. Yet it remains indefinitely. But why?
Also, the process is so persistent that I can bind to it again, and I see that it is the same exact process responding because the PID (process ID) is the same!
View 4 Replies
View Related
Dec 21, 2009
This is the scenario:
1 user has a main activity used for ii.
2 program needs to communicate with peers and keep connection and wait for messages
3 when a message comes it is shown in the main activity. so the question is should I use a service for the communication and what type of service? and also should I use Aspects in the service in order to keep my ii responsive and why?
View 1 Replies
View Related
Jul 6, 2009
I'm writing an application that consists of a background Service and one or several Activities acting as UI towards this. There will most likely be several different UIs for this service that will installed later on, like custom widgets or UIs. The question is how to solve this in the most efficient way. Is it better to only use Intents for communication between UI and Service (sending control commands with Intents from the UI and listening for Intents from the Service for state and data updates) or should I prefer using IPC communication (AIDL -> Java Stub, binding to the service etc.)?
Since the UI might be started long after the service is started, I would either need to use sticky intents to signal current state, or have a very frequent intent sent by the service if choose to go with the Intent-based design. Which one would be the preferred way in that case? I've read that sticky intents are much more resource consuming than normal intents, but are intents more consuming than IPC directly towards the service? Also, is really an AIDL the right way to allow third-party integration? Intents sounds better, since they are also asynchronous.
View 12 Replies
View Related
May 3, 2010
Is there a significant difference in time needed for sending data over a service or by using an intent?
Are there general advices when to use service and when to use intents?
View 4 Replies
View Related
Nov 12, 2010
I am a junior software developer working mostly in c#. I am being tested at work by my boss for a new role as an android sdk developer. I passed the first interview and now he wants me to write a small application which boasts certain simple features such as communication via GPRS service and handling data (i guess he means use a sqlite table to store some input). Anyone got any simple ideas you can throw at me to give me a good starting point.
View 3 Replies
View Related
Jun 28, 2010
I am trying to figure out the best practice of communication between a TabActivity and the child activity embedded in this TabActivity.
In my TabActivity, there is a button. When the button is clicked, I want the child activity embedded in this TabActivity to be updated. I wrote the code like below, and just wonder whether it is a good practice.
CODE:..................
View 3 Replies
View Related
Apr 15, 2009
I have custom view and once some action occur in it (say touch/key event) I'd like to call some code in my activity. My question is if broadcasts (intent filters/broadcast receivers) are good communication mechanism for such thing? If not, what is normal/android preferred way to do it?
View 5 Replies
View Related
Jul 22, 2009
Here's the deal: I have an Android application that needs to call a web service every X seconds (currently 60 seconds). This application has multiple tabs and these tabs all need to interact with the data themselves. One is a MapView, one is a ListView and then the third is irrelevant but will need to also get some global data eventually. The issue is that I want my main activity to have a thread that runs in the background, gets the results and then instructs both child activities in the TabHost to update themselves with the latest data. Also, when the user clicks on the tabs and the onCreate/onResume activities fire, I would also like to force a redraw by getting the latest data from the main activity. I'm really at a loss here. I've tried this with a service and some ghetto static methods to pass an instance of the Activities to the Service to call specific functions to update their views whenever the timer fired, but the slowdowns were pretty bad and the code was just ugly ugly ugly.
So I implemented it as a timer-driven thread in the tabhost activity and then I have timer-driven threads in each child activity that then grab the data (in a synchronized fashion) and update their map/list. It's much faster but still feels slightly hack-ish, especially the part where I'm calling a custom function in the parent activity like so:
((MainActivity)getParent()).getNearbyMatches();
This adds an element of strong coupling that I'm not entirely thrilled with, but from a performance standpoint it's much better than it was. I appreciate the answers that have already been given and will do a bit of research on the content provider front but I'm not sure I want to go back to the service model.
View 3 Replies
View Related
Aug 27, 2010
My app is comprised of a set of reusable Activities that other apps can reuse. For various reasons, I would like my Activities to be launched in context of the invoking Activity's process, instead of always being launched in my Activity's process (default behavior on Android). How can I achieve this?
View 1 Replies
View Related
Apr 26, 2010
If an application begins a Service via bindService or startService, will this Service object ever run from a process different from that of the application? I ask because many Android example projects begin a service and communicate to them using IPC which seems wholly unnecessary considering that, according to the Android Service documentation, "... services, like other application objects, run in the main thread of their hosting process." IPC, AIDL, and the IBinder interface only seem useful if connecting to a Service started by an application other than your own. Is this a correct or fair understanding?
View 1 Replies
View Related
Apr 1, 2009
I need to load a .so library in my Service onCreate method, but the process just down after System.load. On the other hand, the same code can work in Activity. Are there some differences between activity and service in the way of load .so file.
My code class AisoundService extends Service
CODE:......................
View 3 Replies
View Related
Mar 25, 2009
I have two services, both of them lies in separate apk, which run in same process. The two service share same jar file by <uses-library> method. The jar file implement a class, say "test", is a singleton. But I found that two instance of test is created under this case, could anybody give me some tips? I want to ensure it's singleton. Code...
View 8 Replies
View Related
Feb 5, 2009
I intended to show a dialog in a service process, then I tried to use the AlertDialog but got the below error message: WindowManager$BadTokenException: Unable to add window -- token null is not for an application The reason seems to be that the dialog is not used in a application context (activity should be fine?) Was there any way that can solve this problem?
View 2 Replies
View Related
Aug 20, 2010
Does anyone know how to, or if it's even possible to check the (foreground process/top of the activity stack) from a service?
View 20 Replies
View Related
Sep 29, 2010
I'm designing an android app which will need to do the following steps:
1. User pushes a button or otherwise indicates to "sync data".
2. Sync process will use rest web services to move data to and from the server.
3. The data will be stored locally in a sqlite database.
4. The sync process should provide status updates/messages to the UI
5. The user should not be allowed to wander off to other parts of the application and do more work during the sync process.
The first time the sync process runs, it may take 10-20 minutes. After the initial sync, less data will be transferred and stored and I expect the process to take 1-2 minutes or less. I've been doing a lot of reading about android's AsychTask and various examples of using a Service. But I don't fully understand the design considerations and trade-offs of choosing one design over the other. I currently have my demo project stubbed out using an AsychTask. After watching (most of) Developing Android REST client applications:
http://code.google.com/events/io/2010/sessions/developing-RESTful-and...
I'm left confused the design patterns described here feel overly complex, perhaps because I just "don't get it" yet.
View 19 Replies
View Related
Feb 2, 2010
I am attempting to signal my widget such that it receives my new Intent from my service
The code I am using to send from the service is as follows:
CODE:...........................
View 2 Replies
View Related
Mar 24, 2010
I have a Service/AlarmManager set to go off ever hour; as seen at: http://github.com/commonsguy/cw-advandroid/tree/master/SystemServices...
The Alarm triggers a Socket connection to communicate with a Web Server. I'm logging the interaction to a file so I can see it later. When I leave the phone on my desk for a day, it seems that more often than not I get a "Network unreachable" error when trying to do any networking.
I believe it is related to how deeply the phone goes into sleep. Is there a special kind of lock I have to hold, or some command required to prep the wireless radio so that it can be ready to access the Internet?
View 21 Replies
View Related
Sep 15, 2009
I needed to call a remote service. The service basically fetches data from the network. I am bind the connection once,and then I unbind the connection when the user is no more in that page. Everything works fine.Except that when I call the sa,e remote method for 17th time,it just does not call the service at all.It neither throws the DeadObjecti Exception. I have run out of ideas.Is there anything that I may be missing.
View 7 Replies
View Related
Nov 10, 2010
We have several Android apps and found that the process of uploading apps for each release via Android Developers website slow and ineffective. We like to automate the process. To be more clear, we have automation for compiling and building the apps, it's a matter of uploading them to Android Market and fill in the app details for publishing. This is where we are left with manual publishing.
I am interested to learn how people automate the processing?
Does Google have a web service of some sort for publishing Android App on Android Market?
View 1 Replies
View Related
Sep 16, 2009
The app widget documentation indicates that the "widget provider"being a receiver of a broadcast service may not exist (the process) beyond the completion of the call.If I want to maintain state between two broadcast events, such as say widgetProvider.onUpdate(), can I start a local service and leave it hanging there until my widgets are disabled? If I didn't explicitly stop that service will it be loaded again and resumed when the device wakes up.
View 4 Replies
View Related
Sep 16, 2013
What is weird to me is that on the closeup line graph the second half plummets much faster than the first half. But at the same time, the second half doesn't nearly have as many wakelocks (as indicated by the "Awake" bar being basically completely empty during that time.
What the mobile network colours represent but I never had this problem previously with it on all the time so this shouldn't be an issue. GPS is always on. Again, this was never an issue until supposedly now so this also shouldn't be an issue.
Now, the four big drainers are Cell Standby, Android System, Google Services, and Android OS. Cell Standby I know is due to a missplaced decimal point in the framework, so I know that's just false battery recording. Android System I don't have a clue what the problem is, I read somewhere it might have to deal with wakelocks. But it won't tell me what process exactly is causing battery drain. Google Services are well, google services. I don't know what are classified as google services exactly (like this was never a problem before..), and finally Android OS. Again, the battery statistics thing isn't nearly specific enough.
View 4 Replies
View Related