Hi Frank, Thanks for the suggestion. Are you aware of any tutorial or anything like that which would help me do all what you said. Tommy is also trying to get me a code which uses SOAP request to talk to the server.
Thanks, Raqeeb On Apr 8, 2:42 am, Frank Weiss <[email protected]> wrote: > I think you're doing it the hard way, but maybe that's on purpose. The easy > way is to use UrlConnection instead of sockets and use AsyncTask instead of > creating threads by hand. AsyncTask uses a thread pool and makes it really > easy to hook up actions and responses with the UI. Trying to get a response > back to the UI from a non-UI thread is a well-known headache for Anfroid > programmers. > > On Wed, Apr 7, 2010 at 10:36 PM, raqz <[email protected]> wrote: > > Hi, > > > I have a main class activity that does the task of sending control to > > other activities on click of a button. I am also starting a thread in > > the main class. This thread basically sets up a connection with the > > server and is active throughout the lifetime of the application. > > I have two functions in the thread class, send and receive data from > > server. Therefore, when the other activities need to send/receive data > > from server, they use those particular functions. > > First of all please let me know if what I am trying to do is fine as > > per the architecture of the operating system. If its fine, when I try > > to run the code, the app crashes and i see a NullPointerException and > > a RuntimeException in the DDMS log. > > Could some one please help me out in this or suggest a better way to > > implement the concept. > > Also, please be assured that, the other functionality of the code > > works perfectly fine. > > The main class code is as below > > [code] > > package com.getfriends; > > > import java.util.ArrayList; > > import java.util.Iterator; > > import java.util.List; > > import java.util.StringTokenizer; > > import android.app.Activity; > > import android.app.ListActivity; > > import android.os.Bundle; > > import android.widget.ArrayAdapter; > > import android.widget.ListView; > > import android.widget.Toast; > > > public class GetFriendsActivity extends Activity{ > > > private MyFriend obj= new MyFriend(); > > List<MyFriend> listOfFriends = new ArrayList<MyFriend>(); > > > int i=0; > > private String FName=null; > > private String LName=null; > > private String Latitude=null; > > private String Longitude=null; > > private String TimeStamp=null; > > public static ArrayList<String> namesArray=new > > ArrayList<String>(); > > > public void onCreate(Bundle savedInstanceState) { > > super.onCreate(savedInstanceState); > > Thread cThread= null; > > try{ > > cThread = new Thread(new ConnectSocket()); > > cThread.start();} > > catch (Exception e){ > > Toast.makeText(getBaseContext(), > > "Unable to start thread", > > Toast.LENGTH_LONG).show(); > > > } > > Toast.makeText(getBaseContext(), > > "Starting", > > Toast.LENGTH_LONG).show(); > > > try { > > getFriendsList(); > > } catch (Exception e) { > > Toast.makeText(getBaseContext(), > > "Unable to fetch friend list:"+e.getMessage(), > > Toast.LENGTH_LONG).show(); > > e.printStackTrace(); > > } > > try { > > displayFriendsList(); > > } catch (Exception e) { > > Toast.makeText(getBaseContext(), > > "Unable to display friend list:"+e.getMessage() > > +e.getLocalizedMessage(), > > Toast.LENGTH_LONG).show(); > > e.printStackTrace(); > > } > > ConnectSocket socket = new ConnectSocket(); > > > socket.sendData("ABCDEF"); > > String k = socket.recieveData(); > > Toast.makeText(getBaseContext(), > > "Recieved from server:"+k, > > Toast.LENGTH_LONG).show(); > > > } > > > private void getFriendsList() { > > > String line[] = new String[3]; > > line[0]= > > "Abdul#Raqeeb#23.44#34.44#4.45"; > > line[1]= > > "Abdul#Azeez#33.44#44.44#5.45"; > > line[2]= > > "Kiral#Azeez#53.44#454.44#6.45"; > > for(int k=0;k<=2;k++){ > > StringTokenizer tokens=new > > StringTokenizer(line[k],"#"); > > try{ > > while(tokens.hasMoreTokens()) > > { > > FName=tokens.nextToken(); > > LName=tokens.nextToken(); > > Latitude=tokens.nextToken(); > > Longitude=tokens.nextToken(); > > TimeStamp=tokens.nextToken(); > > listOfFriends.add(new > > MyFriend(FName,LName,Latitude,Longitude,TimeStamp)); > > } > > } > > catch (Exception e){ > > Toast.makeText(this, > > "Some prob > > here:"+e.getLocalizedMessage(), > > > Toast.LENGTH_SHORT).show(); > > e.printStackTrace(); > > } > > } > > > } > > > } > > > [/code] > > > The code related to the thread is > > [code] > > package com.getfriends; > > > import java.io.BufferedReader; > > import java.io.DataOutputStream; > > import java.io.IOException; > > import java.io.InputStreamReader; > > import java.net.InetAddress; > > import java.net.Socket; > > > import android.util.Log; > > > public class ConnectSocket implements Runnable{ > > /** Called when the activity is first created. */ > > > public String fromServer=null; > > public static BufferedReader inFromServer=null; > > public static Socket clientSocket=null; > > public InetAddress address =null; > > public static DataOutputStream outToServer=null; > > > �...@override > > public void run(){ > > > try { > > address = InetAddress.getByName("127.0.0.1"); > > Log.d("TCP", "C: Connecting..."); > > clientSocket = new Socket(address, 9999); > > outToServer = new > > DataOutputStream(clientSocket.getOutputStream()); > > inFromServer = new BufferedReader(new > > InputStreamReader(clientSocket.getInputStream())); > > } catch (Exception e) { > > System.out.println("Not Connected to the internet"); > > } > > > } > > > public void sendData(String s){ > > try { > > if(s.equals(null)) s="hello"; > > Log.d("TCP", "C: Sending..."); > > outToServer.writeBytes(s+'#'); > > outToServer.flush(); > > } catch (IOException e) { > > // TODO Auto-generated catch block > > Log.d("TCP", "unable to send msg"); > > e.printStackTrace(); > > } > > > } > > > public String recieveData(){ > > try { > > fromServer = inFromServer.readLine(); > > if(fromServer.equals(null)) fromServer="bad luck"; > > } catch (IOException e) { > > // TODO Auto-generated catch block > > Log.d("TCP", "unable to send msg"); > > e.printStackTrace(); > > } > > return fromServer; > > > } > > > } > > [/code] > > > Many thanks, > > Raqeeb > > > -- > > You received this message because you are subscribed to the Google > > Groups "Android Developers" group. > > To post to this group, send email to [email protected] > > To unsubscribe from this group, send email to > > [email protected]<android-developers%[email protected]> > > For more options, visit this group at > >http://groups.google.com/group/android-developers?hl=en > > > To unsubscribe, reply using "remove me" as the subject. -- You received this message because you are subscribed to the Google Groups "Android Developers" 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-developers?hl=en

