簡體   English   中英

android http發布作為服務

[英]android http post as a service

任何人都可以請告訴我如何讓這個代碼在后台工作,當我使代碼在后台工作時有什么不同,如“在后台做”和服務,我應采取哪種方法

感謝所有提前

這是代碼:

public void  SticketFunction(double book, double libadd, long time){
        Log.v("log_tag", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% SticketFunction()");
        //HttpClient
        HttpClient nnSticket = new DefaultHttpClient();
        //Response handler
        ResponseHandler<String> res = new BasicResponseHandler();

        HttpPost postMethod = new HttpPost("http://www.books-something.com");


        try {
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(5);

            nameValuePairs.add(new BasicNameValuePair("book", book+""));

            nameValuePairs.add(new BasicNameValuePair("libAss", libass+""));

            nameValuePairs.add(new BasicNameValuePair("Time", time+""));

            nameValuePairs.add(new BasicNameValuePair("name", "jack"));
            //Encode and set entity
            postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8));
            //Execute 
            //manSticket.execute(postMethod);
            String response =Sticket.execute(postMethod, res).replaceAll("<(.|\n)*?>","");
            if (response.equals("Done")){

                //Log.v("log_tag", "!!!!!!!!!!!!!!!!!! SticketFunction got a DONE!");

            }
            else Log.v("log_tag", "!!!!!!!?????????? SticketFunction Bad or no response: " + response);

        } catch (ClientProtocolException e) {  
            // TODO Auto-generated catch block 
            //Log.v("log_tag", "???????????????????? SticketFunction Client Exception");
        } catch (IOException e) {  
            // TODO Auto-generated catch block
            //Log.v("log_tag", "???????????????????? IO Exception");
        } 
    }

}

您不需要為此服務。 如果您不想在執行HTTP請求時阻止應用程序,我相信您可以使用AsyncTask。 它提供了一個方便的界面,用於顯示ui上的結果。

另一種選擇是使用Handler類。

的AsyncTask

Service中運行任務的好處是,如果用戶退出調用Activity ,則不會銷毀它。

您可以考慮擴展IntentService並實現onHandleIntent ,它可以自動在單獨的線程上運行。

在這種情況下使用Service (或IntentService )時,您將在Bundle中傳遞NameValuePair值。 您還需要將Response數據保存到持久存儲(數據庫,首選項等),以便以后在Activity進行檢索。

或者,您可以在常規Service (實現onStartCommand )或調用Activity運行AsyncTask

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM