0
我目前有一個類擴展Thread
。在那個類中,我得到了一個網頁的內容(這只是JSON數據),我解析了它。這取決於我得到的JSON對象,因爲這決定了我要採取的操作或我必須展示的視圖。從線程回調呼叫類
但我目前這樣做的方式是我在一個類中檢查所有可能的JSON請求並根據它執行操作。
例子,我班還挺看起來是這樣的:
public class Communicator extends Thread
{
Thread threadToInterrupt = null;
String URL = null;
public Houses (String URL)
{
threadToInterrupt = Thread.currentThread();
setDaemon(true);
this.URL = URL;
}
public void run()
{
// Code to get the JSON from a web page
// Finally parse the result into a String
String page = sb.toString();
JSONObject jObject = new JSONObject(page);
if (!jObject.isNull("house"))
{
// do alot of stuff
}
else if (!jObject.isNull("somethingelse"))
{
// do alot of other stuff
}
}
}
正如你可以想像,這個類很快就會有很多JSON檢查和代碼的混亂。這並不覺得這是正確的方式。
我想,也許最好傳遞一個回調方法來調用?這樣我可以我的類更改爲這樣的事情:
public class Communicator extends Thread
{
Thread threadToInterrupt = null;
String URL = null;
public Houses (String URL, String JsonString, object CallbackMethod)
{
// ... code
}
public void run()
{
// ....
JSONObject jObject = new JSONObject(page);
if (!jObject.isNull(this.JsonString))
{
// THen call the CallbackMethod...
CallbackMethod (jObject);
}
}
}
public class MyClass
{
public void MyFunc()
{
(new Communicator("http://url.tld", "House", this.MyCallback)).start();
}
public void MyCallback(JSONObject jObject)
{
// Then i can perform actions here...
}
}
不知道這是一個好主意。但如果是這樣,我如何創建一個像我的例子中的回調?這有可能嗎?