将DefaultHttpClient称为Singleton

时间:2011-09-21 11:36:50

标签: android constructor singleton httpclient

我想将DefaultHttpClient转换为单例类

public class HttpClient {   
private static final String TAG = "&&----HTTPClient-----**";
public static void SendHttpPost (String URL, JSONObject jsonObjSend){

    try{    

            DefaultHttpClient httpclient = new DefaultHttpClient();
            HttpPost httpPostRequest = new HttpPost(URL);
}

我该怎么做?实际上我尝试了一些实现它们的方法,但它对我没用。

以下是我的单身人士应该如何看待的例子

public class DefaultHttpClient {
static DefaultHttpClient instanceCE;    
public static DefaultHttpClient getInstance(){
    if(instanceCE == null){
        instanceCE = new DefaultHttpClient ();
    }

    return instanceCE;

}

DefaultHttpClient object = new DefaultHttpClient .getInstance(); //calling it here

我知道这个实现是错误的等待您的意见来帮助我。谢谢!

我已经把最终的实现放在了不起作用。

public class HttpClient {
public static DefaultHttpClient instanCE;
private static final String TAG = "&&----HTTPClient-----**";
public static DefaultHttpClient getInstance(){
    if(instanCE == null){
        instanCE = new DefaultHttpClient();
    }
    return instanCE;
}
public static void SendHttpPost (String URL, JSONObject jsonObjSend){

    try{    
            DefaultHttpClient httpclient = DefaultHttpClient.getInstance();
            HttpPost httpPostRequest = new HttpPost(URL);

3 个答案:

答案 0 :(得分:2)

3件事:

1)您需要创建一个私有构造函数,以确保getInstance()是创建实例的唯一方法。

private DefaultHttpClient() {
    // Optional Code
}

2) getInstance()是静态的,因此应该像这样调用:

DefaultHttpClient object = DefaultHttpClient.getInstance();

3)您错过了结束}

修改
“我收到一条错误,指出该方法未定义为DefaultHttpClient”

如果是这种情况,请确保输入正确的类而不是 org.apache.http.impl.client.DefaultHttpClient

答案 1 :(得分:2)

您的代码没有任何问题,只是您错误地调用了它。

 DefaultHttpClient object = DefaultHttpClient.getInstance();

你的名字似乎也混淆了。将DefaultHttpClient重命名为单例的第一行和第三行上的MyHttpclient。 这肯定会解决它。

干杯!

答案 2 :(得分:1)

似乎没关系,你只是说错了。 getInstance()方法是静态的。所以如何调用它的正确方法是:

DefaultHttpClient object = DefaultHttpClient.getInstance();