Android™
Android™
Understanding Async Function Return Values
See more Async Examples
Explains how to get the return value of the function called synchonously in the background thread.Chilkat Android™ Downloads
// Important: Don't forget to include the call to System.loadLibrary
// as shown at the bottom of this code sample.
package com.test;
import android.app.Activity;
import com.chilkatsoft.*;
import android.widget.TextView;
import android.os.Bundle;
public class SimpleActivity extends Activity {
private static final String TAG = "Chilkat";
// Called when the activity is first created.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
boolean success = false;
// Some Chilkat functions can be called asynchronously.
// If a function "Func" can be called asynchronously, there will be a corresponding "FuncAsync" function that returns a Task object.
//
// When Task.Run is called, the synchronous "Func" runs in a background thread.
//
// For Chilkat methods that return a status (true/false), get returned value by calling GetResultBool.
// For example..
CkSocket sock = new CkSocket();
// --------------------------------------------------------------
// Synchronous call returning true/false
success = sock.Connect("example.com",443,true,5000);
// --------------------------------------------------------------
// Asynchronous call
CkTask task = sock.ConnectAsync("example.com",443,true,5000);
// ...
task.Run();
// ...
// ...
// Get the status (true/false) value returned by the synchronous method called in the background thread.
success = task.GetResultBool();
// --------------------------------------------------------------
// Synchronous call returning an integer
int count = sock.ReceiveCount();
// --------------------------------------------------------------
// Asynchronous call
task = sock.ReceiveCountAsync();
// ...
task.Run();
// ...
// ...
// Get the integer value returned by the synchronous method called in the background thread.
count = task.GetResultInt();
// --------------------------------------------------------------
// Synchronous call returning an string
String s = sock.receiveString();
// --------------------------------------------------------------
// Asynchronous call
task = sock.ReceiveStringAsync();
// ...
task.Run();
// ...
// ...
// Get the string value returned by the synchronous method called in the background thread.
s = task.getResultString();
// --------------------------------------------------------------
// Synchronous call returning an object
CkSocket connection = sock.AcceptNextConnection(5000);
// --------------------------------------------------------------
// Asynchronous call
task = sock.AcceptNextConnectionAsync();
// ...
task.Run();
// ...
// ...
// Get the object returned by the synchronous method called in the background thread.
// We do this a little differently. We create an new object of the same type,
// and then load it with the returned object (assuming it was not null).
CkSocket acceptedConnection = new CkSocket();
if (task.get_TaskSuccess() == true) {
success = acceptedConnection.LoadTaskResult(task);
}
}
static {
System.loadLibrary("chilkat");
// Note: If the incorrect library name is passed to System.loadLibrary,
// then you will see the following error message at application startup:
//"The application <your-application-name> has stopped unexpectedly. Please try again."
}
}