Форум программистов, компьютерный форум CyberForum.ru

Async Task тормозит UI и не выводит диалог - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Что такое setWakeMode http://www.cyberforum.ru/android-dev/thread1575316.html
Вот что написано про это на startandroid: Метод setWakeMode позволяет ставить стандартную (PowerManager.WakeLock) блокировку на время проигрывания, указав тип блокировки. Не забудьте в манифесте добавить права на WAKE_LOCK. Что такое WakeLock для setWakeMode? Посмотрел в хелпе, но так и не понял толком, что это. С английского звучит как запрет на бодрствование. Как это понять?
Программирование Android Включение gps на андройд Здравствуйте! Нуждаюсь в помощи, пытаюсь реализовать такое: автоматическое вкл. gps при старте устройства и его нельзя отключить, если нажимаешь отключить, то нужно ввести пароль. В какую сторону копать? (Только начал изучать) //Enable GPS Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE"); intent.putExtra("enabled", true); sendBroadcast(intent); //Disable GPS http://www.cyberforum.ru/android-dev/thread1575223.html
Программирование Android Картинка выходит за границы ImageButton
//some code... int pixelsToDp = convertToPixelsDp(-4.5f); params.setMargins(pixelsToDp, pixelsToDp, pixelsToDp, pixelsToDp); //some code... ImageButton btn = new ImageButton(this); btn.setPadding(0, 0, 0, 0); btn.setLayoutParams(params); btn.setScaleType(ImageView.ScaleType.CENTER_CROP); buttonRow.add(btn); И...
Некорректная работа jsoup на Android Программирование Android
Здравствуйте! Подскажите, с чем может быть связана следующая проблема. Есть парсер html с использованием jsoup. Отрабатывает корректно, получаю всё необходимое. Вот код: import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.io.File; import java.io.IOException;
Программирование Android Запись картинок и файлов во внутреннюю память http://www.cyberforum.ru/android-dev/thread1574956.html
Здравствуйте! Загружаю информацию через Jsoup в AsyncTask. Думаю сохранять её в файлы(что то вроде кэша). Уже имел дело с этим, но как ни стараюсь постоянно выходит ошибка: 11-08 13:19:34.692 836-854/com.nothing.myapplication.app W/ApplicationContext﹕ Unable to create files directory /data/data/com.nothing.myapplication.app/files 11-08 13:19:34.692 ...
Программирование Android Передача значения переменой на сервер Здраствуйте! Например есть у меня переменная, а её значение надо передать на сервер. Как это реализовать? Добавлено через 3 часа 9 минут Ребят, помогите подробнее

Показать сообщение отдельно
Rainmaker93
3 / 3 / 1
Регистрация: 12.09.2013
Сообщений: 69

Async Task тормозит UI и не выводит диалог - Программирование Android

08.11.2015, 22:33. Просмотров 303. Ответов 5
Метки (Все метки)

Доброго времени суток, друзья.
Начитался про AsyncTask и решил запихнуть дерганье данных с сервера в поток.
Данные с сервера тянутся, записываются, но вот не отображается ProgressDialog и UI фризится на время выполнения задачи.
Подскажите пожалуйста, в чем проблема
Вот мой классик
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
package com.helper.moto.motohelper;
 
 
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.model.LatLng;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
 
 
 
class ServerMarkerDownloader extends AsyncTask<Void,Void,ArrayList<MyMarker>> {
    public String SERVER_ADRESS;
    public String str="";
    public static final int CONNECTION_TIMEOUT =1000 * 15;
    public GoogleMap map;
    public Context context;
    ProgressDialog processing;
    
    
    public ServerMarkerDownloader(Context c, GoogleMap m){
        this.context=c;
        this.map = m; 
        readFile(c);        
    }
    
   
 
    @Override
    protected ArrayList<MyMarker> doInBackground(Void... params) {  
        
                
        HttpParams params1 = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(params1, CONNECTION_TIMEOUT);
        HttpConnectionParams.setSoTimeout(params1, CONNECTION_TIMEOUT);
        
        HttpClient client = new DefaultHttpClient(params1);
        HttpPost post = new HttpPost(SERVER_ADRESS + "select_all_markers.php");
        
        
        ArrayList<MyMarker> serverMarkers = new ArrayList<MyMarker>();
        
        try
        {   
            
            HttpResponse httpResponse = client.execute(post);
            HttpEntity entity = httpResponse.getEntity();
            String result = EntityUtils.toString(entity);           
            String[] messages;
            messages = result.split("@");                                           
            for (int i = 0; i<messages.length;i++)
            {
                JSONObject jObject = new JSONObject(messages[i]);
                String jId = jObject.getString("id");
                String jlat = jObject.getString("lat");
                String jlon = jObject.getString("lng");
                String jtype = jObject.getString("type");
                String jdescr = jObject.getString("descr");
                String jtitle = jObject.getString("title");
                String juname = jObject.getString("username");
                String jphone = jObject.getString("phone");
                LatLng position = new LatLng(Double.valueOf(jlat),Double.valueOf(jlon));
                
                MyMarker markerToAdd = new MyMarker();
                markerToAdd.con = context;
                markerToAdd.internalID = jId;
                markerToAdd.position = position;
                markerToAdd.markerType = Integer.valueOf(jtype);
                markerToAdd.title = jtitle;
                markerToAdd.longDesc = jdescr;
                markerToAdd.map = map;
                markerToAdd.phone = jphone;
                markerToAdd.userName = juname;
                serverMarkers.add(i, markerToAdd);
                                        
            }       
            
        }           
            
        catch (Exception e)
        {
            e.printStackTrace();                        
        }
        return serverMarkers;
        }
 
        
    
        
    
    @Override
    protected void onPostExecute(ArrayList<MyMarker> result){
        processing.dismiss();
        super.onPostExecute(result);        
    }
    
    @Override
    protected void onPreExecute(){
         processing = new ProgressDialog(context);
         processing.setMessage("Выполнение");
         processing.setProgressStyle(ProgressDialog.STYLE_SPINNER);
         processing.setIndeterminate(true);
         processing.setCancelable(false);
         processing.show();
         processing.show();
        super.onPreExecute();
    }
     void readFile(Context context) {
         try {
              
              BufferedReader br = new BufferedReader(new InputStreamReader(
                  context.openFileInput("data.txt")));
 
              while ((str = br.readLine()) != null) {
                  SERVER_ADRESS=str;
              }
            } catch (FileNotFoundException e) {
              e.printStackTrace();
            } catch (IOException e) {
              e.printStackTrace();
            }
          }
 
}
а запускаю я его вот так
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
void requestMarkersFromServer()
    {
        map.clear();
        markersFromServer = new ArrayList<MyMarker>();
        smd = new ServerMarkerDownloader(this, map);
        try {
            smd.execute();
            markersFromServer=smd.get();
            for(int i = 0; i<markersFromServer.size(); i++)
            {
                try{
                markersFromServer.get(i).recalculate();
                markersFromServer.get(i).addMarker();
                }
                catch(Exception e)
                {
                    e.printStackTrace();
                }
            }
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ExecutionException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        markersCollection.clear();
       
        for (int i=0; i< markersFromServer.size();++i)
        {
            markersCollection.put(markersFromServer.get(i).marker.getId(), markersFromServer.get(i));
        }
     
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru