Skip to content

Instantly share code, notes, and snippets.

@SemonCat
Last active August 29, 2015 14:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SemonCat/11177386 to your computer and use it in GitHub Desktop.
Save SemonCat/11177386 to your computer and use it in GitHub Desktop.
CallbackExample
public class CallbackExample {
public interface OnNetworkFinish{
void OnFinish(String Data);
void OnFail();
}
class GetGoogleData{
List<OnNetworkFinish> mListener;
void getGoogleTitle(){
new Thread(new Runnable(){
@Overwrite
void run(){
try{
//do something to get network date on nonuithread;
...
String data = something;
//when finish ,callback
if (mListener!=null){
for (OnNetworkFinish listener:mListener)
listener.OnFinish(data);
}
}catch (Exception e){
if (mListener!=null){
for (OnNetworkFinish listener:mListener)
listener.OnFail();
}
}
}
}).start;
}
void setListener(OnNetworkFinish listener){
if (mListener==null){
mListener = new ArrayList<OnNetworkFinish>();
}
mListener.add(listener);
}
}
GetGoogleData mGetGoogleData;
int main(){
mGetGoogleData = new GetGoogleData();
mGetGoogleData.setListener(new OnNetworkFinish{
void OnFinish(String Data){
//this will be call when nonuithread work finish.
//do something to data...
}
void OnFail(){
//do something when get error
}
});
mGetGoogleData.getGoogleTitle();
}
void otherNeed2Notify(){
mGetGoogleData.setListener(new OnNetworkFinish{
void OnFinish(String Data){
//I'm other place.
}
void OnFail(){
}
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment