Ich möchte wissen, was der Unterschied zwischen der Implementierung der Schnittstelle und dem Erstellen einer Instanz ist. Hier ist ein Beispiel für Code, der es ermöglicht, zwischen IntentService und Activity mit ResultReceiver zu kommunizieren .Unterschied zwischen der Implementierung einer Schnittstelle und dem Erstellen einer Instanz davon
MySimpleReceiver Klasse:
public class MySimpleReceiver extends ResultReceiver {
public static final Creator CREATOR = null;
private Receiver receiver;
// Constructor takes a handler
public MySimpleReceiver(Handler handler) {
super(handler);
}
// Setter for assigning the receiver
public void setReceiver(Receiver receiver) {
this.receiver = receiver;
}
// Defines our event interface for communication
public interface Receiver {
void onReceiveResult(int resultCode, Bundle resultData);
}
// Delegate method which passes the result to the receiver if the receiver
// has been assigned
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
if (receiver != null) {
receiver.onReceiveResult(resultCode, resultData);
}
}
}
die beste Weg, um Setup der Rückruf für, wenn Daten aus dem Dienst empfangen wird:
Implementierung MySimpleReceiver.Receiver
Schnittstelle im MainActivity:
public class MainActivity extends Activity implements MySimpleReceiver.Receiver
{
@Override
public void onReceiveResult(int resultCode, Bundle resultData) {
//
}
}
oder eine Instanz von t erstellen Die Schnittstelle in der MainActivity:
public class MainActivity extends Activity {
public MySimpleReceiver receiverForSimple;
// Setup the callback for when data is received from the service
public void setupServiceReceiver() {
receiverForSimple = new MySimpleReceiver(new Handler());
// This is where we specify what happens when data is received from the
// service
receiverForSimple.setReceiver(new MySimpleReceiver.Receiver() {
@Override
public void onReceiveResult(int resultCode, Bundle resultData) {
if (resultCode == RESULT_OK) {
String resultValue = resultData.getString("resultValue");
Toast.makeText(MainActivity.this, resultValue, Toast.LENGTH_SHORT).show();
}
}
});
}
}
und was ist der Unterschied zwischen? Danke
danke, aber meine frage war: wann sollte ich den ersten code verwenden, und wann sollte ich den seconde code verwenden? –
@ OtmàaneFikri - Siehe mein Update –