I am absolutely positive that the object is initialized before the
thread accessing it starts. I moved the initialization in the
constructor that completes before the thread starts. I removed static
final. Nothing. The thread UI calls surfaceCreated and in it I create
this object and start a thread that later accesses the object and
somehow accessing the field in the run() method causes
NullPointerException. If I access it from the UI thread it works. Can
a field be thread specific? And for everybody else be invisible? And
why only on HTC Desire (haven't tested other HTC phones). I thought it
might be some race condition or something since it has a faster CPU
but the code really looks like this:

status = new Status();
Thread thread = new Thread() {
 public void run() {
    if (status == null) {
         throw new NullPointerException();
 }
}.start();

And on HTC is always null.

On Sep 27, 3:44 am, Tim Mensch <[email protected]> wrote:
> On 9/26/2011 6:36 PM, sebastian_bugiu wrote:
>
> > I don't think there is an issue with my code as it works
> > just fine in the emulator and on other phones. After all accessing a
> > private static final initialized field should not yield a
> > NullPointerException in any circumstances...
>
> Except if the class statics haven't been initialized yet? We're talking
> threads here. Aside from that: Are you POSITIVE that the null pointer is
> the static final field, and not something it's using?
>
> Java isn't magic. You still have to write thread-aware code -- and you
> need to know how Java works with static initializers. I don't, which is
> why I recommended you ask that question in a Java forum, or one of the
> Android developer forums.
>
> I just have to disagree with your premise: There simply isn't likely to
> be a difference in how Java behaves between platforms EXCEPT FOR TIMING
> ISSUES when you have a faster CPU. That's where threads can get you in
> trouble.
>
> Tim

-- 
You received this message because you are subscribed to the Google Groups 
"Android Discuss" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/android-discuss?hl=en.

Reply via email to