Thursday, July 11, 2013

Re: [android-developers] Re: can _ever_ the intent received by a BroadcastReceiver onReceive() method be null?

a this is a step to the right direction ;)
notice they don't check for null

now any places the  ReceiverData object is initialized ?

btw search in grepcode Sucks big time ! could you in the name of Mordor tell me what I should make out from here : http://grepcode.com/search?query=ReceiverData&n=

compare : http://androidxref.com/4.2.2_r1/search?q=ReceiverData&defs=&refs=&path=&hist=&project=abi&project=bionic&project=bootable&project=build&project=cts&project=dalvik&project=development&project=device&project=docs&project=external&project=frameworks&project=gdk&project=hardware&project=libcore&project=libnativehelper&project=ndk&project=packages&project=pdk&project=prebuilts&project=sdk&project=system

In froyo the intent is just passed in :

http://androidxref.com/2.2.3/xref/frameworks/base/core/java/android/app/ActivityThread.java#1563

In 4.2.2 we have the same in a constructor : http://androidxref.com/4.2.2_r1/xref/frameworks/base/core/java/android/app/ActivityThread.java#648

Now scheduleReceiver we have in ApplicationThreadNative : http://androidxref.com/4.2.2_r1/xref/frameworks/base/core/java/android/app/ApplicationThreadNative.java#758
 and in ActivityThread : http://androidxref.com/4.2.2_r1/xref/frameworks/base/core/java/android/app/ActivityThread.java#645

What's the difference ?

Anyway in ApplicationThreadNative it is called here http://androidxref.com/4.2.2_r1/xref/frameworks/base/core/java/android/app/ApplicationThreadNative.java#197 and it is passed an intent from :

http://androidxref.com/4.2.2_r1/xref/frameworks/base/core/java/android/app/ApplicationThreadNative.java#189

So Intent intent = Intent.CREATOR.createFromParcel(data);

but this is where I give up - where is this "data" (a Parcel instance) created ?






On Thursday, July 11, 2013 5:54:07 PM UTC+3, Piren wrote:
i'm pretty sure it's impossible to guarantee something like that... i don't think part of their new programmer orientation is "if you ever touch the code that runs BroadcastReceiver.onReceive...never send a null intent".

Either way, at least on android 4.2.2_r1, it seems like it's impossible to get a null intent. feel free to verify this is true for all previous versions as well (and don't forget to keep checking this method every time they make a new build).


On Thursday, July 11, 2013 4:09:27 PM UTC+3, Palmer Eldritch wrote:
That's nice advice - but in this case I think one should have a guarantee

Does it make sense to receive a null intent ? Is it even possible with the current android code ?

On Thursday, July 11, 2013 9:46:00 AM UTC+3, Piren wrote:
No point of being sure here... even if the current code is structured in a way that it shouldn't be null, nothing says it will stay like that in all future code revisions.
Ever since i started getting null exceptions from android (not NullPointerException... a Null instead of an exception) i learned it's always a good idea to check for nulls when you're supposed to receive an object.

On Thursday, July 11, 2013 6:01:13 AM UTC+3, Palmer Eldritch wrote:
I suspect it can't be null by construction - I just can't pin it down in code (or in docs)

It's nice to be sure

Can somebody point to the relevant code parts ?

I mean what paths lead to the onReceive being triggered ? Can we have a null intent in any of them ?

On Thursday, July 11, 2013 4:18:09 AM UTC+3, TreKing wrote:

On Wed, Jul 10, 2013 at 4:14 PM, Palmer Eldritch <the....@gmail.com> wrote:
I mean nobody knows ??

Do you ever check the intent for being null and if not why ?

Here's what you do. Assume it will not be null, then use ACRA or some other bug-reporting tool to handle uncaught exceptions. If you get a null pointer exception from here, you know it can be null.

You're welcome.

-------------------------------------------------------------------------------------------------
TreKing - Chicago transit tracking app for Android-powered devices

--
--
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+unsubscribe@googlegroups.com
For more options, visit this group at
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 unsubscribe from this group and stop receiving emails from it, send an email to android-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home


Real Estate