Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #2851

Re: Threads and UI in Android

From Dirk Bruere at NeoPax <dirk.bruere@gmail.com>
Newsgroups comp.lang.java.programmer
Subject Re: Threads and UI in Android
Date Mon, 04 Apr 2011 19:18:46 +0100
Organization Dirk Bruere at Neopax
Lines 97
Message-ID <8vugc0F6boU1@mid.individual.net> (permalink)
References <8vrrsdF6urU1@mid.individual.net> <8vs005F5tmU1@mid.individual.net> <inark9$gr4$7@lust.ihug.co.nz> <inb4mo$2br$1@dont-email.me> <8vt2tjFcvhU1@mid.individual.net>
Reply-To dirk.bruere@gmail.com
Mime-Version 1.0
Content-Type text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding 7bit
X-Trace individual.net /MugFxGCNoLzCdR3P1xjNw6cnM+j+iYO2lKrt591eLBX0m6kN4
Cancel-Lock sha1:olKqJEyTWyIlHg/n3GAZ1OUTMXQ=
User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.15) Gecko/20110303 Thunderbird/3.1.9
In-Reply-To <8vt2tjFcvhU1@mid.individual.net>
Path csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!news.dougwise.org!feed.ac-versailles.fr!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
Xref x330-a1.tempe.blueboxinc.net comp.lang.java.programmer:2851

Show key headers only | View raw


On 04/04/2011 06:23, Dirk Bruere at NeoPax wrote:
> On 04/04/2011 01:51, markspace wrote:
>> On 4/3/2011 3:16 PM, Lawrence D'Oliveiro wrote:
>>> In message<8vs005F5tmU1@mid.individual.net>, Dirk Bruere at NeoPax
>>> wrote:
>>>
>>>> It would seem the answer is in here somewhere
>>>> http://developer.android.com/resources/articles/painless-threading.html
>>>
>>> Seems like AsyncTask is the way to go: it automatically divides up
>>> execution
>>> between a background thread and the UI thread, and takes care of all the
>>> synchronization between the two for you.
>>>
>>> How much more painless can you get? :)
>>
>>
>>
>> Given that the OP want's to "constantly [check] for messages" I think
>> the way he's doing it now is fine. runOnUiThread() does the
>> synchronization that he needs, and it seems cleaner than trying to wrap
>> his deamon in an AsyncTask object and constantly call publishProgress()
>> whenever he gets a packet.
>>
>> Modern threading is getting sophisticated, and one sophisticated thing
>> to do is to limit the number of threads so as to not overwhelm the OS.
>> Limited thread pools are used for this purpose. I don't know how
>> AsynchTask is implemented, but if it uses a thread pool, you could
>> easily starve your own app of threads for AsynchTask by permanently
>> capturing too many AsynchTask threads, which is what the OP's task would
>> do.
>>
>> "Long running" tasks relative to the UI response time go in AsynchTask.
>> "Really long running" tasks, or permanent tasks like the OP's little
>> network daemon, go in their own private thread. Seems safest that way.
>>
>
> Currently I have this:
>
> public class BlinkDataThread extends Thread
> {
> int length = Constants.PACKET_LENGTH;
> byte[] receiveBuffer = new byte[length];
> DatagramSocket socket;
> DatagramPacket packet;
>
> public void run()
> {
> try
> {
> DatagramSocket ds = new DatagramSocket(Constants.LOCAL_PORT);
> DatagramPacket incoming = new DatagramPacket(receiveBuffer,
> receiveBuffer.length);
> incoming.setLength(length);
> String packetStr=new String(receiveBuffer, "UTF-8");
>
> while(true) //Run this as an endless loop
> {
> ds.setReceiveBufferSize(receiveBuffer.length);
> ds.receive(incoming);
> packetStr = new String(receiveBuffer, 0, incoming.getLength(), "UTF-8");
> if (packetStr != null) BlinkAPI.updateIncomingData(packetStr);
> }
> } catch (IOException e1) {}
> }
>
> }
>
> Where linkAPI.updateIncomingData(packetStr); is the offending bit since
> it triggers updates on the UI thread.
>
> That would be where I use runOnUiThread()?
>

Or not.
That BlinkAPI.updateIncomingData(packetStr) eventually gets to call this 
from the Data class

	public static void setRadioTitleAdapterListView()
	{
		radioLV.setAdapter(radioTitleAdapter);
		radioTitleAdapter.notifyDataSetChanged();
		radioLV.setVisibility(VISIBLE);	
	}
It is really this I need to execute in the UI thread.
Is there some way of wrapping that method (amongst several of the same 
type) as a message to the UI thread telling it to execute 
Data.setRadioTitleAdapterListView() from there?

[I can send the packet received in the BlinkDataThread but that rather 
defeats the idea since all the heavy duty processing occurs after it is 
picked up.]

-- 
Dirk

http://www.neopax.com/technomage/ - My new book - Magick and Technology

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Threads and UI in Android Dirk Bruere at NeoPax <dirk.bruere@gmail.com> - 2011-04-03 19:16 +0100
  Re: Threads and UI in Android Dirk Bruere at NeoPax <dirk.bruere@gmail.com> - 2011-04-03 20:27 +0100
    Re: Threads and UI in Android Lawrence D'Oliveiro <ldo@geek-central.gen.new_zealand> - 2011-04-04 10:16 +1200
      Re: Threads and UI in Android markspace <-@.> - 2011-04-03 17:51 -0700
        Re: Threads and UI in Android "John B. Matthews" <nospam@nospam.invalid> - 2011-04-03 21:50 -0400
        Re: Threads and UI in Android Dirk Bruere at NeoPax <dirk.bruere@gmail.com> - 2011-04-04 06:23 +0100
          Re: Threads and UI in Android Lawrence D'Oliveiro <ldo@geek-central.gen.new_zealand> - 2011-04-04 18:48 +1200
            Re: Threads and UI in Android markspace <-@.> - 2011-04-04 17:31 -0700
          Re: Threads and UI in Android Dirk Bruere at NeoPax <dirk.bruere@gmail.com> - 2011-04-04 19:18 +0100
            Re: Threads and UI in Android markspace <-@.> - 2011-04-04 14:54 -0700
              Re: Threads and UI in Android Dirk Bruere at NeoPax <dirk.bruere@gmail.com> - 2011-04-04 23:41 +0100
                Re: Threads and UI in Android markspace <-@.> - 2011-04-04 16:29 -0700
                Re: Threads and UI in Android Dirk Bruere at NeoPax <dirk.bruere@gmail.com> - 2011-04-05 00:32 +0100
                Re: Threads and UI in Android markspace <-@.> - 2011-04-04 17:27 -0700
                Re: Threads and UI in Android Dirk Bruere at NeoPax <dirk.bruere@gmail.com> - 2011-04-05 01:30 +0100
                Re: Threads and UI in Android Steve Sobol <sjsobol@JustThe.net> - 2011-04-04 18:53 -0700
                Re: Threads and UI in Android Dirk Bruere at NeoPax <dirk.bruere@gmail.com> - 2011-04-05 03:19 +0100
                Re: Threads and UI in Android Steve Sobol <sjsobol@JustThe.net> - 2011-04-04 23:04 -0700
                Re: Threads and UI in Android Dirk Bruere at NeoPax <dirk.bruere@gmail.com> - 2011-04-05 08:04 +0100
    Re: Threads and UI in Android markspace <-@.> - 2011-04-03 17:29 -0700

csiph-web