Could you include a binary?  I just want to see what the platform is doing;
I don't need to look at the code.  Thanks!

On Mon, Jul 23, 2012 at 10:40 PM, Andy dev <andrewpmo...@gmail.com> wrote:

>
> Dianne, I've created a very cut down version of my app where I'm still
> getting the issue. I've uploaded it to google drive here:
> https://docs.google.com/open?id=0B9RsW3kcQ9jPem9PLVIxdWdlQlU
>
>
> Basically, build and install the code and switch on accessibility for the
> app. Run the app and then change focus to a home screen or another app etc.
> Then receive a text message. You'll see the logcat line showing up for the
> new text message.
>
> Then use the tasklist to swipe away the app.
>
> Get another text message and as it arrives the service will crash, restart
> and you won't see the logcat message appear in the logs.
>
> The code is a little hacked together just to try and minimize the code for
> you to look at to try and recreate the issue. Let me know if you can't get
> it working or having any questions.
>
> On Sunday, July 22, 2012 8:19:23 AM UTC+1, Dianne Hackborn wrote:
>
>> TransactionTooLarge means that the data being sent through the IPC call
>> is too large.
>>
>> I just checked my test case and verified that this doesn't kill the
>> service's process *if* it is in the foreground (with
>> Service.startForeground()).  I'm not sure what may be different in your
>> situation...  one thing to keep in mind is that when the user removes a
>> task, and it is not safe to kill a process associated with it, then that
>> process is marked as having a pending kill, and as soon as it becomes safe
>> it will be killed.  So for example at whatever point after that you are no
>> longer foreground, your process will be killed.
>>
>> There was a change in JB to make this interaction better about finding
>> processes associated with the app and killing them.  If your service isn't
>> running in the main process of the app, its process should always be killed
>> now, where before it may not have been.
>>
>> However in all cases it is only killed if it is safe to do so -- that is
>> if the process is at an oom_adj level that is safe to kill by the OOM
>> killer.  Just running a background service means it is safe to kill; the
>> service itself will be restarted if you have indicated this is what you
>> want.  This is not a new situation that your app needs to deal with -- its
>> process could always have been killed while in this state if memory was
>> needed elsewhere (for example if the user launches a game that uses a lot
>> of RAM).
>>
>> Back to the exception you mention, I wouldn't like to see this in the
>> logs...  if you can give me steps to reproduce it, it is something I would
>> like to investigate.
>>
>> That said, your initial description is not actually a system problem as
>> you describe it -- yes your process gets killed, but this is a normal part
>> of operation you should be dealing with, and if you can't recover when it
>> is restarted then that is something that needs to be fixed in the app.
>>
>> On Sat, Jul 21, 2012 at 4:01 PM, Andy dev <andrewpmo...@gmail.com> wrote:
>>
>>> Ok, I've found out a little more information. It seems that the crash
>>> doesn't happen when the task is swiped away, it's when one of the broadcast
>>> receivers tries to fire after the app has been swiped away. It works find
>>> beforehand, but it's cleared from the task list I'm also seeing this in the
>>> logs:
>>>
>>>
>>> 07-21 23:57:40.286: E/JavaBinder(309): !!! FAILED BINDER TRANSACTION !!!
>>> 07-21 23:57:40.286: W/BroadcastQueue(309): Exception when sending
>>> broadcast to ComponentInfo{com.example.**android.app/com.example.**
>>> android.app.receiver.**SmsReceiver}
>>> 07-21 23:57:40.286: W/BroadcastQueue(309): android.os.**
>>> TransactionTooLargeException
>>> 07-21 23:57:40.286: W/BroadcastQueue(309):  at 
>>> android.os.BinderProxy.**transact(Native
>>> Method)
>>> 07-21 23:57:40.286: W/BroadcastQueue(309):  at android.app.**
>>> ApplicationThreadProxy.**scheduleReceiver(**
>>> ApplicationThreadNative.java:**767)
>>> 07-21 23:57:40.286: W/BroadcastQueue(309):  at com.android.server.am.**
>>> BroadcastQueue.**processCurBroadcastLocked(**BroadcastQueue.java:220)
>>> 07-21 23:57:40.286: W/BroadcastQueue(309):  at com.android.server.am.**
>>> BroadcastQueue.**processNextBroadcast(**BroadcastQueue.java:750)
>>> 07-21 23:57:40.286: W/BroadcastQueue(309):  at com.android.server.am.**
>>> ActivityManagerService.**finishReceiver(**ActivityManagerService.java:**
>>> 13281)
>>> 07-21 23:57:40.286: W/BroadcastQueue(309):  at android.app.**
>>> ActivityManagerNative.**onTransact(**ActivityManagerNative.java:**346)
>>> 07-21 23:57:40.286: W/BroadcastQueue(309):  at com.android.server.am.**
>>> ActivityManagerService.**onTransact(**ActivityManagerService.java:**
>>> 1611)
>>> 07-21 23:57:40.286: W/BroadcastQueue(309):  at android.os.Binder.**
>>> execTransact(Binder.java:367)
>>> 07-21 23:57:40.286: W/BroadcastQueue(309):  at
>>> dalvik.system.NativeStart.run(**Native Method)
>>> 07-21 23:57:40.286: W/ActivityManager(309): Scheduling restart of
>>> crashed service com.example.android.app/.**service.MainRunningService
>>> in 5000ms
>>>
>>> To be honest, I've tried to read about the TransactionTooLargeException,
>>> but I don't feel any wiser!
>>>
>>>
>>>
>>> On Friday, July 20, 2012 11:23:11 PM UTC+1, Andy dev wrote:
>>>
>>>> Thanks. I'll keep looking for a solution then!
>>>>
>>>>
>>>> On Friday, July 20, 2012 11:04:13 PM UTC+1, Kostya Vasilyev wrote:
>>>>
>>>>> Yep, I can confirm this with my own foreground service on 4.1.1
>>>>> (Galaxy Nexus).
>>>>>
>>>>> -- K
>>>>>
>>>>> 2012/7/21 Andy dev <andrewpmo...@gmail.com>
>>>>>
>>>>>> Anyone at least confirm what I'm doing looks ok - even if you don't
>>>>>> know the reason why. Just as a sanity check?
>>>>>>
>>>>>> On Thursday, July 19, 2012 10:19:22 PM UTC+1, Andy dev wrote:
>>>>>>
>>>>>>> I've got a service running (an accessibility service called
>>>>>>> MainRunningService) and also use an alarmmanager within my app.
>>>>>>>
>>>>>>> On ICS when a user pulled up the task list and swiped the app away
>>>>>>> the service kept running, but the user interface was cleared from the 
>>>>>>> stack.
>>>>>>>
>>>>>>> On jelly bean I'm finding this to be a little different. It seems
>>>>>>> like it kills off the service and then restarts it even if I've got an 
>>>>>>> icon
>>>>>>> in the notification bar and I've got the app set to run in the 
>>>>>>> foreground.
>>>>>>> This is killing off all my current app state and causing it to stop 
>>>>>>> working.
>>>>>>>
>>>>>>> I'm seeing this in the logs
>>>>>>>
>>>>>>> 07-19 21:47:42.213: I/ActivityManager(307): Killing
>>>>>>> 834:com.example.android.**appnam****e/u0a72: remove task
>>>>>>> 07-19 21:47:42.236: W/AudioService(307):   AudioFocus   audio focus
>>>>>>> client died
>>>>>>> 07-19 21:47:42.236: I/AudioService(307):  AudioFocus
>>>>>>> abandonAudioFocus(): removing entry for android.media.AudioManager@*
>>>>>>> *41a****42020com.example.android.**appna****me.service.**
>>>>>>> MainRunningService$****1@41963ec0<android.media.AudioManager@41a42020com.example.android.appname.service.MainRunningService$1@41963ec0>
>>>>>>> 07-19 21:47:42.244: W/ActivityManager(307): Scheduling restart of
>>>>>>> crashed service com.rageconsulting.android.**app****name/.service.**
>>>>>>> MainRunningServi****ce in 5000ms
>>>>>>>
>>>>>>> For the persistent Icon I'm doing the following:
>>>>>>> Notification foregroundNotification;
>>>>>>> foregroundNotification = new 
>>>>>>> Notification(R.drawable.iconx,******"Example
>>>>>>> starting notification",System.**currentTi****meMillis());
>>>>>>> Intent i=new Intent(this, MainUIActivity.class);
>>>>>>> i.setFlags(Intent.FLAG_**ACTIVIT****Y_CLEAR_TOP|Intent.**FLAG_**
>>>>>>> ACTIVI**TY_SINGLE_TOP);
>>>>>>> foregroundNotification.flags|=******Notification.FLAG_NO_CLEAR;
>>>>>>> startForeground(9642, foregroundNotification);
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Is there something I'm doing wrong? I've never had a problem in the
>>>>>>> past with this code, but it's not very good on jelly bean.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>  --
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "Android Developers" group.
>>>>>> To post to this group, send email to android-developers@**googlegroup
>>>>>> **s.com <android-developers@googlegroups.com>
>>>>>> To unsubscribe from this group, send email to
>>>>>> android-developers+**unsubscribe**@googlegroups.com<android-developers%2bunsubscr...@googlegroups.com>
>>>>>> For more options, visit this group at
>>>>>> http://groups.google.com/**group**/android-developers?hl=en<http://groups.google.com/group/android-developers?hl=en>
>>>>>>
>>>>>
>>>>>  --
>>> You received this message because you are subscribed to the Google
>>> Groups "Android Developers" group.
>>> To post to this group, send email to android-developers@**
>>> googlegroups.com <android-developers@googlegroups.com>
>>> To unsubscribe from this group, send email to
>>> android-developers+**unsubscr...@googlegroups.com<android-developers%2bunsubscr...@googlegroups.com>
>>> For more options, visit this group at
>>> http://groups.google.com/**group/android-developers?hl=en<http://groups.google.com/group/android-developers?hl=en>
>>>
>>
>>
>>
>> --
>> Dianne Hackborn
>> Android framework engineer
>> hack...@android.com
>>
>> Note: please don't send private questions to me, as I don't have time to
>> provide private support, and so won't reply to such e-mails.  All such
>> questions should be posted on public forums, where I and others can see and
>> answer them.
>>
>>   --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>



-- 
Dianne Hackborn
Android framework engineer
hack...@android.com

Note: please don't send private questions to me, as I don't have time to
provide private support, and so won't reply to such e-mails.  All such
questions should be posted on public forums, where I and others can see and
answer them.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to