• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Help AsyncTask help

Dai_the_flu

Lurker
Hi all,

I am new to android and am completely puzzled by AsyncTasks. I need to create a leaderboard which will pull global leaderboard scores from a server.

I have posted below the two methods that were created in the LeaderboardsFragment which are used to access and display the scores. I am unsure of how to use these in the AsyncTask - mostly how and what parameters to pass to the AsyncTask. Any hints would be appreciated, i've been stuck on this for a while.


public void getGlobalScores() {

//gets global score in HTML format to be parsed

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);

try {
URL url = new URL("http://62.254.134..............");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
readStream(con.getInputStream());
} catch (Exception e) {
e.printStackTrace();
}

}


//used by the network connect to get or send highscore information
//Not much should change in here with regex wise etc, but as it gets the data and stores the global scores in a lovely 2d array
//it then displays to screen
public void readStream(InputStream in) {
BufferedReader reader = null;
try {
StringBuilder htmlIn = new StringBuilder();

StringBuilder globalScoreBuilder = new StringBuilder();

htmlIn.append("");
reader = new BufferedReader(new InputStreamReader(in));
String line = "";
while ((line = reader.readLine()) != null) {
htmlIn.append(line);
}

// String to be scanned to find the pattern.
String html = htmlIn.toString();
String regexPattern = "<td align=\"left\" style=\"padding-left:10px;\">(\\d+?)</td>|<td align=\"right\" style=\"padding-right:10px;\">(\\w+?)</td>";

// Create a Pattern object
Pattern patternObject = Pattern.compile(regexPattern);

// Now create matcher object.
Matcher matcherObject = patternObject.matcher(html);

Log.d(getActivity().getResources().getString(R.string.LOG_TAG), "Trying to find regex matches");
TopScores.append("\n");
int nextFreePointer = 0;
int rowCount = 0;

while (matcherObject.find()) {
if (matcherObject.group(1) != null) {
Log.d(getActivity().getResources().getString(R.string.LOG_TAG), "Regex match : " + matcherObject.group(1));
globalScoreBuilder.append(matcherObject.group(1) + " ");
global_scores[rowCount][nextFreePointer] = matcherObject.group(1);
nextFreePointer++;
}
if (matcherObject.group(2) != null) {
Log.d(getActivity().getResources().getString(R.string.LOG_TAG), "Regex match : " + matcherObject.group(2));
globalScoreBuilder.append(matcherObject.group(2) + " ");
global_scores[rowCount][nextFreePointer] = matcherObject.group(2);
nextFreePointer++;
}

if (nextFreePointer > 2) {
nextFreePointer = 0;
rowCount++;
}

globalScoreBuilder.append("\n");

}

StringBuilder sb = new StringBuilder();
String lineSeparator = System.getProperty("line.separator");

for (String[] row : global_scores) {
sb.append(Arrays.toString(row)).append(lineSeparator);
}

String text = sb.toString();

TopScores.append("Global Top 10 Scores\n");

TopScores.append(text);

} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

public class AsyncOperation extends AsyncTask<String, Void, Void>{

protected void onPreExecute(){
Log.d("PreEx", "Im now in PreExecute");
}//end of onPreExecute

@override
protected Void doInBackground(String... params) {


}//doinBackground


protected void onProgressUpdate(Void... values){


}//onProgressUpdate


protected void onPostExecute(Void... result){

}//end of onPostExecute



}//end of AsyncOperation inner class

}//end of Leaderboards class
 
Back
Top Bottom