活动已泄漏最初此处添加窗口com.android.internal.policy.impl.PhoneWindow$DecorView@44f72ff0此处、最初、窗口、android

2023-09-06 00:27:19 作者:撩妹创始人。

我使用谷歌的地方API和希望获取最近的餐馆和咖啡厅,但是当我取,使用进度条数据的一个错误发生时

 类LoadPlaces扩展的AsyncTask<字符串,字符串,字符串> {

    / **
     *在启动后台线程显示进度对话框
     * * /
    @覆盖
    在preExecute保护无效(){
        super.on preExecute();
        pDialog =新ProgressDialog(MainActivity.this);
        pDialog.setMessage(Html.fromHtml(< B>搜索< / B>< BR />加载的地方......));
        pDialog.setIndeterminate(假);
        pDialog.setCancelable(假);
        pDialog.show();
    }

    / **
     *让地方JSON
     * * /
    保护字符串doInBackground(字符串参数... args){
        //创建地方类对象
        googlePlaces =新GooglePlaces();

        尝试 {
            //通过管道符号Separeate您的场所类型|
            //如果你想所有类型的地方让它为空
            //检查类型列表由谷歌支持
            //
            字符串类型=咖啡厅|餐厅; //清单地方只有咖啡馆,餐馆

            //半径米 - 增加该值,如果你没有找到任何地方
            双半径= 1000; //千米

            //获得最近的地方
            nearPlaces = googlePlaces.search(gps.getLatitude(),
                    gps.getLongitude(),半径,类型);


        }赶上(例外五){
            e.printStackTrace();
        }
        返回null;
    }

 保护无效onPostExecute(字符串file_url){
        让所有的产品之后//关闭该对话框
        如果(pDialog!= NULL)
            pDialog.dismiss();
        //从后台线程更新UI
        runOnUiThread(新的Runnable(){
            公共无效的run(){
                / **
                 *更新解析放置到LISTVIEW
                 * * /
                //获取JSON响应状态
                字符串状态= nearPlaces.status;

                //检查所有可能的状态
                如果(status.equals(OK)){
                    //成功得到了地方的详细资料
                    如果(nearPlaces.results!= NULL){
                        //通过各地方循环
                        对于(地点号码:nearPlaces.results){
                            HashMap的<字符串,字符串>图=新的HashMap<字符串,字符串>();

                            //将引用不会在列表视图显示 - 它会被隐藏
                            //将基准是用来获取的地方全部细节
                            map.put(KEY_REFERENCE,p.reference);

                            // 地名
                            map.put(KEY_NAME,p.name);


                            //添加HashMap来ArrayList中
                            placesListItems.add(图)
                        }
                        //名单适配器
                        ListAdapter适配器=新SimpleAdapter(MainActivity.this,placesListItems,
                                R.layout.list_item,
                                新的String [] {KEY_REFERENCE,KEY_NAME},新的INT [] {
                                        R.id.reference,R.id.name});

                        //添加数据到列表视图
                        lv.setAdapter(适配器);
                    }
                }
                否则如果(status.equals(ZERO_RESULTS)){
                    发现//零结果
                    alert.showAlertDialog(MainActivity.this,近地点,
                            对不起,没有找到地方,尝试改变的地方类型,
                            假);
                }
                否则如果(status.equals(UNKNOWN_ERROR))
                {
                    alert.showAlertDialog(MainActivity.this,错误的地方,
                            对不起未知错误。
                            假);
                }
                否则如果(status.equals(OVER_QUERY_LIMIT))
                {
                    alert.showAlertDialog(MainActivity.this,错误的地方,
                            对不起,查询限制到谷歌的地方是达到了
                            假);
                }
                否则如果(status.equals(REQUEST_DENIED))
                {
                    alert.showAlertDialog(MainActivity.this,错误的地方,
                            对不起出错。请求被拒绝,
                            假);
                }
                否则如果(status.equals(INVALID_REQUEST))
                {
                    alert.showAlertDialog(MainActivity.this,错误的地方,
                            对不起出错。无效的请求,
                            假);
                }
                其他
                {
                    alert.showAlertDialog(MainActivity.this,错误的地方,
                            对不起出错。
                            假);
                }
            }
        });

    }
 

和GooglePlaces类的搜索方法是

 公共PlacesList搜索(双纬度,双经度,双半径,字符串类型)
        抛出异常{

    this._latitude =纬度;
    this._longitude =经度;
    this._radius =半径;

    尝试 {

        HTT prequestFactory HTT prequestFactory = createRequestFactory(HTTP_TRANSPORT);
        HTT prequest请求= HTT prequestFactory
                .buildGetRequest(新GenericUrl(PLACES_SEARCH_URL));
        。request.getUrl()把(钥匙,API_KEY);
        。request.getUrl()把(位置,_latitude +,+ _longitude);
        。request.getUrl()把(半径,_radius); //米
        。request.getUrl()把(传感器,假);
        如果(类型!= NULL)
            。request.getUrl()把(类型,类型);



        。PlacesList列表= request.execute()parseAs(PlacesList.class);
        //检查日志猫的地方响应状态
        Log.d(宿状态,+ list.status);
        返回列表;

    }赶上(Htt的presponseException E){
        Log.e(错误,e.getMessage());
        返回null;
    }

}
 

和我已经使用权限像                    

但我收到错误的logcat是

  08-14 22:29:59.867:E / AndroidRuntime(331):致命异常:AsyncTask的#1
08-14 22:29:59.867:E / AndroidRuntime(331):java.lang.RuntimeException的:一个错误而执行doInBackground发生()
08-14 22:29:59.867:E / AndroidRuntime(331):在android.os.AsyncTask $ 3.done(AsyncTask.java:200)
08-14 22:29:59.867:E / AndroidRuntime(331):在java.util.concurrent.FutureTask中$ Sync.innerSetException(FutureTask.java:273)
08-14 22:29:59.867:E / AndroidRuntime(331):在java.util.concurrent.FutureTask.setException(FutureTask.java:124)
08-14 22:29:59.867:E / AndroidRuntime(331):在java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:307)
08-14 22:29:59.867:E / AndroidRuntime(331):在java.util.concurrent.FutureTask.run(FutureTask.java:137)
08-14 22:29:59.867:E / AndroidRuntime(331):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
08-14 22:29:59.867:E / AndroidRuntime(331):在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:561)
08-14 22:29:59.867:E / AndroidRuntime(331):在java.lang.Thread.run(Thread.java:1096)
08-14 22:29:59.867:E / AndroidRuntime(331):java.lang.NoClassDefFoundError的:。com.google.common.base preconditions所致
08-14 22:29:59.867:E / AndroidRuntime(331):在com.google.api.client.util.ClassInfo< INIT>(ClassInfo.java:164)
08-14 22:29:59.867:E / AndroidRuntime(331):在com.google.api.client.util.ClassInfo.of(ClassInfo.java:92)
08-14 22:29:59.867:E / AndroidRuntime(331):在com.google.api.client.util.GenericData< INIT>(GenericData.java:79)
08-14 22:29:59.867:E / AndroidRuntime(331):在com.google.api.client.util.GenericData< INIT>(GenericData.java:61)
08-14 22:29:59.867:E / AndroidRuntime(331):在com.google.api.client.http.GenericUrl< INIT>(GenericUrl.java:97)
08-14 22:29:59.867:E / AndroidRuntime(331):在com.eheuristic.android.googlemap.GooglePlaces.search(GooglePlaces.java:56)
08-14 22:29:59.867:E / AndroidRuntime(331):在com.eheuristic.android.googlemap.MainActivity $ LoadPlaces.doInBackground(MainActivity.java:1 85)
08-14 22:29:59.867:E / AndroidRuntime(331):在com.eheuristic.android.googlemap.MainActivity $ LoadPlaces.doInBackground(MainActivity.java:1)
08-14 22:29:59.867:E / AndroidRuntime(331):在android.os.AsyncTask $ 2.call(AsyncTask.java:185)
08-14 22:29:59.867:E / AndroidRuntime(331):在java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:305)
08-14 22:29:59.867:E / AndroidRuntime(331):4 ...更多
08-14 22:29:59.967:W / IInputConnectionWrapper(331):showStatusIcon上的非活动InputConnection
08-14 22:30:02.298:E /窗口管理器(331):活动com.eheuristic.android.googlemap.MainActivity渗漏最初此处添加窗口com.android.internal.policy.impl.PhoneWindow$DecorView@44f72ff0
08-14 22:30:02.298:E /窗口管理器(331):android.view.WindowLeaked:活动com.eheuristic.android.googlemap.MainActivity渗漏窗口com.android.internal.policy.impl.PhoneWindow$DecorView@44f72ff0最初这里加入
08-14 22:30:02.298:E /窗口管理器(331):在android.view.ViewRoot< INIT>(ViewRoot.java:247)
08-14 22:30:02.298:E /窗口管理器(331):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
08-14 22:30:02.298:E /窗口管理器(331):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
08-14 22:30:02.298:E /窗口管理器(331):在android.view.Window $ LocalWindowManager.addView(Window.java:424)
08-14 22:30:02.298:E /窗口管理器(331):在android.app.Dialog.show(Dialog.java:241)
08-14 22:30:02.298:E /窗口管理器(331):在com.eheuristic.android.googlemap.MainActivity $ LoadPlaces.on preExecute(MainActivity.java:164)
08-14 22:30:02.298:E /窗口管理器(331):在android.os.AsyncTask.execute(AsyncTask.java:391)
08-14 22:30:02.298:E /窗口管理器(331):在com.eheuristic.android.googlemap.MainActivity.onCreate(MainActivity.java:104)
08-14 22:30:02.298:E /窗口管理器(331):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-14 22:30:02.298:E /窗口管理器(331):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
08-14 22:30:02.298:E /窗口管理器(331):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
08-14 22:30:02.298:E /窗口管理器(331):在android.app.ActivityThread.access $ 2300(ActivityThread.java:125)
08-14 22:30:02.298:E /窗口管理器(331):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2033)
08-14 22:30:02.298:E /窗口管理器(331):在android.os.Handler.dispatchMessage(Handler.java:99)
08-14 22:30:02.298:E /窗口管理器(331):在android.os.Looper.loop(Looper.java:123)
08-14 22:30:02.298:E /窗口管理器(331):在android.app.ActivityThread.main(ActivityThread.java:4627)
08-14 22:30:02.298:E /窗口管理器(331):在java.lang.reflect.Method.invokeNative(本机方法)
08-14 22:30:02.298:E /窗口管理器(331):在java.lang.reflect.Method.invoke(Method.java:521)
08-14 22:30:02.298:E /窗口管理器(331):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)
08-14 22:30:02.298:E /窗口管理器(331):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-14 22:30:02.298:E /窗口管理器(331):在dalvik.system.NativeStart.main(本机方法)
 
aHome 4 beta 泄漏

解决方案

正在泄漏的对话框。你需要调用 pDialog.dismiss(); 的异步任务的onPostExecute()方法。你也应该把...

 如果(pDialog!= NULL)
    pDialog.dismiss();
 

在主线程上的活动你的onPause()方法。这将确保该窗口不被泄露,即使你的应用程序失去前景,同时做一些后台执行。你应该有这样的事情...

 公共类登录扩展活动实现View.OnClickListener {

    ProgressDialog PD;

    公共无效的onCreate(包savedInstanceState){

        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
        的setContentView(R.layout.login);
        PD = NULL;
    }

    @覆盖
    公共无效的onPause(){

        super.onPause();
        如果(PD!= NULL)
            pd.dismiss();
    }

    公共无效的onClick(视图v){
        新SendTask()执行();
    }

    / *
    没有网络允许在主线程。
    * /
    私有类SendTask扩展的AsyncTask<字符串,字符串,字符串> {

        INT结果;

        @覆盖
        在preExecute保护无效(){
            PD = ProgressDialog.show(Login.this,,检索收件箱......,真,假);
        }

        @覆盖
        保护字符串doInBackground(字符串...字符串){

            //做网络点击这里
            。结果=帐户prepare();
            返回null;
        }

        @覆盖
        保护无效onPostExecute(字符串使用){

            //检查结果
            pd.dismiss();
            意向意图=新的意图(Login.this,NextActivity.class);
            完();
            startActivity(意向);
        }
     }
}
 

I am using google place api and want to fetch nearest restaurant and cafe but when i fetching that data using progress bar one error occurs

class LoadPlaces extends AsyncTask<String, String, String> {

    /**
     * Before starting background thread Show Progress Dialog
     * */
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(MainActivity.this);
        pDialog.setMessage(Html.fromHtml("<b>Search</b><br/>Loading Places..."));
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(false);
        pDialog.show();
    }

    /**
     * getting Places JSON
     * */
    protected String doInBackground(String... args) {
        // creating Places class object
        googlePlaces = new GooglePlaces();

        try {
            // Separeate your place types by PIPE symbol "|"
            // If you want all types places make it as null
            // Check list of types supported by google
            // 
            String types = "cafe|restaurant"; // Listing places only cafes, restaurants

            // Radius in meters - increase this value if you don't find any places
            double radius = 1000; // 1000 meters 

            // get nearest places
            nearPlaces = googlePlaces.search(gps.getLatitude(),
                    gps.getLongitude(), radius, types);


        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

 protected void onPostExecute(String file_url) {
        // dismiss the dialog after getting all products
        if(pDialog != null)
            pDialog.dismiss();
        // updating UI from Background Thread
        runOnUiThread(new Runnable() {
            public void run() {
                /**
                 * Updating parsed Places into LISTVIEW
                 * */
                // Get json response status
                String status = nearPlaces.status;

                // Check for all possible status
                if(status.equals("OK")){
                    // Successfully got places details
                    if (nearPlaces.results != null) {
                        // loop through each place
                        for (Place p : nearPlaces.results) {
                            HashMap<String, String> map = new HashMap<String, String>();

                            // Place reference won't display in listview - it will be hidden
                            // Place reference is used to get "place full details"
                            map.put(KEY_REFERENCE, p.reference);

                            // Place name
                            map.put(KEY_NAME, p.name);


                            // adding HashMap to ArrayList
                            placesListItems.add(map);
                        }
                        // list adapter
                        ListAdapter adapter = new SimpleAdapter(MainActivity.this, placesListItems,
                                R.layout.list_item,
                                new String[] { KEY_REFERENCE, KEY_NAME}, new int[] {
                                        R.id.reference, R.id.name });

                        // Adding data into listview
                        lv.setAdapter(adapter);
                    }
                }
                else if(status.equals("ZERO_RESULTS")){
                    // Zero results found
                    alert.showAlertDialog(MainActivity.this, "Near Places",
                            "Sorry no places found. Try to change the types of places",
                            false);
                }
                else if(status.equals("UNKNOWN_ERROR"))
                {
                    alert.showAlertDialog(MainActivity.this, "Places Error",
                            "Sorry unknown error occured.",
                            false);
                }
                else if(status.equals("OVER_QUERY_LIMIT"))
                {
                    alert.showAlertDialog(MainActivity.this, "Places Error",
                            "Sorry query limit to google places is reached",
                            false);
                }
                else if(status.equals("REQUEST_DENIED"))
                {
                    alert.showAlertDialog(MainActivity.this, "Places Error",
                            "Sorry error occured. Request is denied",
                            false);
                }
                else if(status.equals("INVALID_REQUEST"))
                {
                    alert.showAlertDialog(MainActivity.this, "Places Error",
                            "Sorry error occured. Invalid Request",
                            false);
                }
                else
                {
                    alert.showAlertDialog(MainActivity.this, "Places Error",
                            "Sorry error occured.",
                            false);
                }
            }
        });

    }

and the search method for GooglePlaces class is

public PlacesList search(double latitude, double longitude, double radius, String types)
        throws Exception {

    this._latitude = latitude;
    this._longitude = longitude;
    this._radius = radius;

    try {

        HttpRequestFactory httpRequestFactory = createRequestFactory(HTTP_TRANSPORT);
        HttpRequest request = httpRequestFactory
                .buildGetRequest(new GenericUrl(PLACES_SEARCH_URL));
        request.getUrl().put("key", API_KEY);
        request.getUrl().put("location", _latitude + "," + _longitude);
        request.getUrl().put("radius", _radius); // in meters
        request.getUrl().put("sensor", "false");
        if(types != null)
            request.getUrl().put("types", types);



        PlacesList list = request.execute().parseAs(PlacesList.class);
        // Check log cat for places response status
        Log.d("Places Status", "" + list.status);
        return list;

    } catch (HttpResponseException e) {
        Log.e("Error:", e.getMessage());
        return null;
    }

}

and i have used permission like

but i am getting error in logcat is

08-14 22:29:59.867: E/AndroidRuntime(331): FATAL EXCEPTION: AsyncTask #1
08-14 22:29:59.867: E/AndroidRuntime(331): java.lang.RuntimeException: An error occured    while executing doInBackground()
08-14 22:29:59.867: E/AndroidRuntime(331):  at android.os.AsyncTask$3.done(AsyncTask.java:200)
08-14 22:29:59.867: E/AndroidRuntime(331):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
08-14 22:29:59.867: E/AndroidRuntime(331):  at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
08-14 22:29:59.867: E/AndroidRuntime(331):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
08-14 22:29:59.867: E/AndroidRuntime(331):  at java.util.concurrent.FutureTask.run(FutureTask.java:137)
08-14 22:29:59.867: E/AndroidRuntime(331):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
08-14 22:29:59.867: E/AndroidRuntime(331):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
08-14 22:29:59.867: E/AndroidRuntime(331):  at java.lang.Thread.run(Thread.java:1096)
08-14 22:29:59.867: E/AndroidRuntime(331): Caused by: java.lang.NoClassDefFoundError: com.google.common.base.Preconditions
08-14 22:29:59.867: E/AndroidRuntime(331):  at com.google.api.client.util.ClassInfo.<init>(ClassInfo.java:164)
08-14 22:29:59.867: E/AndroidRuntime(331):  at com.google.api.client.util.ClassInfo.of(ClassInfo.java:92)
08-14 22:29:59.867: E/AndroidRuntime(331):  at com.google.api.client.util.GenericData.<init>(GenericData.java:79)
08-14 22:29:59.867: E/AndroidRuntime(331):  at com.google.api.client.util.GenericData.<init>(GenericData.java:61)
08-14 22:29:59.867: E/AndroidRuntime(331):  at com.google.api.client.http.GenericUrl.<init>(GenericUrl.java:97)
08-14 22:29:59.867: E/AndroidRuntime(331):  at com.eheuristic.android.googlemap.GooglePlaces.search(GooglePlaces.java:56)
08-14 22:29:59.867: E/AndroidRuntime(331):  at com.eheuristic.android.googlemap.MainActivity$LoadPlaces.doInBackground(MainActivity.java:1 85)
08-14 22:29:59.867: E/AndroidRuntime(331):  at com.eheuristic.android.googlemap.MainActivity$LoadPlaces.doInBackground(MainActivity.java:1)
08-14 22:29:59.867: E/AndroidRuntime(331):  at android.os.AsyncTask$2.call(AsyncTask.java:185)
08-14 22:29:59.867: E/AndroidRuntime(331):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
08-14 22:29:59.867: E/AndroidRuntime(331):  ... 4 more
08-14 22:29:59.967: W/IInputConnectionWrapper(331): showStatusIcon on inactive InputConnection
08-14 22:30:02.298: E/WindowManager(331): Activity com.eheuristic.android.googlemap.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44f72ff0 that was originally added here
08-14 22:30:02.298: E/WindowManager(331): android.view.WindowLeaked: Activity com.eheuristic.android.googlemap.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44f72ff0 that was originally added here
08-14 22:30:02.298: E/WindowManager(331):   at android.view.ViewRoot.<init>(ViewRoot.java:247)
08-14 22:30:02.298: E/WindowManager(331):   at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
08-14 22:30:02.298: E/WindowManager(331):   at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
08-14 22:30:02.298: E/WindowManager(331):   at android.view.Window$LocalWindowManager.addView(Window.java:424)
08-14 22:30:02.298: E/WindowManager(331):   at android.app.Dialog.show(Dialog.java:241)
08-14 22:30:02.298: E/WindowManager(331):   at com.eheuristic.android.googlemap.MainActivity$LoadPlaces.onPreExecute(MainActivity.java:164)
08-14 22:30:02.298: E/WindowManager(331):   at android.os.AsyncTask.execute(AsyncTask.java:391)
08-14 22:30:02.298: E/WindowManager(331):   at com.eheuristic.android.googlemap.MainActivity.onCreate(MainActivity.java:104)
08-14 22:30:02.298: E/WindowManager(331):   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-14 22:30:02.298: E/WindowManager(331):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
08-14 22:30:02.298: E/WindowManager(331):   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
08-14 22:30:02.298: E/WindowManager(331):   at android.app.ActivityThread.access$2300(ActivityThread.java:125)
08-14 22:30:02.298: E/WindowManager(331):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
08-14 22:30:02.298: E/WindowManager(331):   at android.os.Handler.dispatchMessage(Handler.java:99)
08-14 22:30:02.298: E/WindowManager(331):   at android.os.Looper.loop(Looper.java:123)
08-14 22:30:02.298: E/WindowManager(331):   at android.app.ActivityThread.main(ActivityThread.java:4627)
08-14 22:30:02.298: E/WindowManager(331):   at java.lang.reflect.Method.invokeNative(Native Method)
08-14 22:30:02.298: E/WindowManager(331):   at java.lang.reflect.Method.invoke(Method.java:521)
08-14 22:30:02.298: E/WindowManager(331):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-14 22:30:02.298: E/WindowManager(331):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-14 22:30:02.298: E/WindowManager(331):   at dalvik.system.NativeStart.main(Native Method)

解决方案

You are leaking the dialog. You need to call pDialog.dismiss(); in the onPostExecute() method of the async task. You should also put...

if(pDialog != null)
    pDialog.dismiss();

in your onPause() method of the activity on the main thread. This will make sure the window is not leaked, even if your application loses the foreground while doing some background execution. You should have something like this...

public class Login extends Activity implements View.OnClickListener{

    ProgressDialog pd;

    public void onCreate(Bundle savedInstanceState){

        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
        setContentView(R.layout.login);
        pd = null;
    } 

    @Override
    public void onPause(){

        super.onPause();
        if(pd != null)
            pd.dismiss();
    }

    public void onClick(View v){
        new SendTask().execute("");
    }

    /*
    No networking allowed on the main thread.
    */
    private class SendTask extends AsyncTask<String,String,String>{

        int result;

        @Override
        protected void onPreExecute(){
            pd = ProgressDialog.show(Login.this,"","Retrieving Inbox...", true,false);
        }

        @Override
        protected String doInBackground(String...strings){

            //do networking here
            result = account.prepare();
            return null;
        }

        @Override
        protected void onPostExecute(String unused){

            //check result
            pd.dismiss();
            Intent intent = new Intent(Login.this,NextActivity.class);
            finish();
            startActivity(intent);
        }
     }
}

 
精彩推荐
图片推荐