powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / проверка connection, обработка исключений в asyncTask
17 сообщений из 17, страница 1 из 1
проверка connection, обработка исключений в asyncTask
    #39830098
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем! подскажите пожалуйста, подключаюсь на входной форме к серверу mySQL, ввожу логин и пароль. Это в форме MainActivity.
Для подключения к серверу написал отдельный простенький класс с jdbc расширенный с AsynkTask, чтобы процесс подключения шел на заднем фоне. Все отлично отрабатывает, соединение при правильном логине и пароле устанавливается и тестовый запрос проходит отлично.

Вот класс:
Код: 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.
public class SqlConn extends AsyncTask<Void,Void,Void> {
 
    SqlConn(String user,String pass ){
        this.user=user;
        this.pass=pass;
    }
    public  static Connection activeCon=null;
    public  static Statement activeSt=null;
    public  static ResultSet activeRs=null;
 
 
 
 
    private static final String url = "jdbc:mysql://localhost:3306/test_db?serverTimezone=Europe/Moscow&useSSL=false";
    private  static   String user;
    private  static  String pass ;
    @Override
    protected Void doInBackground(Void... voids) {
        try {
            Class.forName("com.mysql.jdbc.Driver");
             activeCon = DriverManager.getConnection(url, user, pass);
            activeSt = activeCon.createStatement();
             activeRs = activeSt.executeQuery("SELECT 1");
 
        } catch (Exception e) {
 
            e.printStackTrace();
        }
return null;
    }
 
    @Override
    protected void onPostExecute(Void aVoid) {
// TODO: что то написать для проверки, но чтобы хватать в MainActivity
        super.onPostExecute(aVoid);
    }
 
}




В MainActivity тоже все просто и прозрачно:
Код: 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.
public class MainActivity extends AppCompatActivity {
TextView textView;
    Button btn1;
EditText login;
EditText password;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView) findViewById(R.id.tv1);
        btn1 = (Button) findViewById(R.id.button);
        login =(EditText) findViewById(R.id.fld_login);
        password =(EditText) findViewById(R.id.fld_password);
        btn1.setOnClickListener(view -> {
 
            if (TextUtils.isEmpty(login.getText())||TextUtils.isEmpty(password.getText())){ //здесь все работает отлично
 
               Toast tst= Toast.makeText(getApplicationContext(),"Заполните для входа все поля!",Toast.LENGTH_SHORT);
                tst.setGravity(0,0, 0);
                tst.show();
 
            }
else {
                try {
 
                    // пробуем подключаться к серверу
                    if (SqlConn.activeCon == null || SqlConn.activeCon.isClosed()) {
                       new SqlConn(login.getText().toString(), password.getText().toString()).execute();
 
                      // КАК ПРОВЕРИТЬ УСПЕШНОСТЬ ПОДКЛЮЧЕНИЯ И ЕСЛИ ОНО УСПЕШНО ПЕРЕЙТИ В СЛЕДУЮЩУЮ АКТИВНОСТЬ. ПРОБЛЕМА С ПРОВЕРКОЙ
                        // ПОДКЛЮЧЕНИЯ. КАК ОТЛОВИТЬ НЕПРАВИЛЬНО ВВЕДЕННЫЙ ЛОГИН ИЛИ ПАРОЛЬ????
                      }
                    else{
                        Toast.makeText(getApplicationContext(),"вы ввели неверный логин или пароль",Toast.LENGTH_SHORT).show();
                    }
 
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        });
    }
}




Главный вопрос топика, как проверить соединение после введения логина и пароля.

1) если пароль /логин введен верно, то переход на другую активность
2) если неверно, то обработать его в виде Toast на MainActivity


(как то нужно проверить исключение, не осилил пока.)

Прошу по возможности отвечать в рамках приведенного кода.
...
Рейтинг: 0 / 0
проверка connection, обработка исключений в asyncTask
    #39830133
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
Код: java
1.
2.
3.
4.
    protected void onPostExecute(Void aVoid) {
// TODO: что то написать для проверки, но чтобы хватать в MainActivity
        super.onPostExecute(aVoid);
    }


Этот код и так выполняется в основном потоке. Можно напрямую обратиться к главной активности.
Но я-бы из него дернул UI поток главной активити с результатом подключения через сообщения: https://www.google.ru/search?q=android main activity looper
Да, "дорого", но правильно. Но и первый вариант тоже рабочий.
...
Рейтинг: 0 / 0
проверка connection, обработка исключений в asyncTask
    #39830504
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanСергей Лалов
Код: java
1.
2.
3.
4.
    protected void onPostExecute(Void aVoid) {
// TODO: что то написать для проверки, но чтобы хватать в MainActivity
        super.onPostExecute(aVoid);
    }


Этот код и так выполняется в основном потоке. Можно напрямую обратиться к главной активности.
Но я-бы из него дернул UI поток главной активити с результатом подключения через сообщения: https://www.google.ru/search?q=android main activity looper
Да, "дорого", но правильно. Но и первый вариант тоже рабочий.

Спасибо за наводку, помогло!

1) Реализовал возврат булевого значения в методе doInBackground. Если процедура подключения прошла, то return true. Если не прошла , соответственно false.

В качестве дополнительного аргумента, добавил в конструктор класса переменную context, чтобы можно было в onPostExecute выполнять контекст в разрезе метода main входной формы. Обращение на стороне Main немного изменилось :
....
new SqlConnection(login.getText().toString(), password.getText().toString(),this).execute();
....


На стороне AsyncTask изменил тип возвращаемого значения у одного из методов, и добавил туда также обработку Context:

Код: 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.
public class SqlConnection extends AsyncTask<Void,Void,Boolean> {

    SqlConnection(String user,String pass, Context context ){
        this.user=user;
        this.pass=pass;
        this.context=context.getApplicationContext();
    }
    public  static Connection activeCon=null;
    public  static Statement activeSt=null;
    public  static ResultSet activeRs=null;
    private static final String url = "jdbc:mysql:......db?serve....pe/Moscow&useSSL=false";
    private  static   String user;
    private  static  String pass ;
    private static Context context;
    @Override
    protected Boolean doInBackground(Void... voids) {
        try {
          ........

        } catch (Exception e) {

         ........
return false;
        }

        return true; // Если соединение выполнилось успешно, то return OK
    }
    @Override
    protected void onPostExecute(Boolean result) {

 // Блоки Toast успешно отрабатывают и выводят необходимые сообщения, в контексте основной Activity - Activity Main с главной формы.

       if (result == true ){
          // System.out.println(result);

           Toast ts= Toast.makeText(context, "Добро пожаловать!", Toast.LENGTH_LONG);
           ts.setGravity(0,0,200);
           ts.show();

А вот если вместо Toast выше подставить переход, то приложуха убивается:
Intent intent = new Intent(context, ActivityTwo.class);
           ((ActivityTwo)context).startActivity(intent);

       } else {
             //  System.out.println(result);
          Toast .....
....
           ts.show();
           }
       }
     // super.onPostExecute(result);


}




C Toast все отлично отрабатывает, а вот с intent тяжеловато. Падает приложение.
...
Рейтинг: 0 / 0
проверка connection, обработка исключений в asyncTask
    #39830514
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов Падает приложение.
потому что ты приводишь тип контекст к ActivityTwo, а он на самом деле MainActivity
...
Рейтинг: 0 / 0
проверка connection, обработка исключений в asyncTask
    #39830829
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaСергей Лалов Падает приложение.
потому что ты приводишь тип контекст к ActivityTwo, а он на самом деле MainActivity

Я познакомился с Intent и Context практически в момент написания этого кода.)) Поправил, спасибо!, все пошло:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
......
  @Override
    protected void onPostExecute(Boolean result) {

       if (result == true ){
           System.out.println(result);
           Toast ts= Toast.makeText(context, "Добро пожаловать!", Toast.LENGTH_LONG);
          ts.setGravity(Gravity.TOP,0,350);
          ts.show();
           Intent intent = new Intent(context, ActivityTwo.class);
           intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
          context.startActivity(intent);
.....



Есть пару утилитарных вопросов, связанных с обработкой соединений, закрытием активностей и хранений соединений .

1) Нормально ли хранить текущее соединение в глобальной переменной,или лучше при успешном входе/исполнении процедуры закрывать соединение и просто хранить успешную строку подключения как текстовую переменную в каком нибудь отдельном классе? И потом при необходимости выполнить какое либо действие выполнять повторное подключение с попыткой выполнить к примеру CRUD.

2) Что лучше при переходе с активити на активити- закрывать принудительно типа .closeActivity(); ? С формой входа/регистрации все ясно, можно принудительно закрывать, так как при успешном входе на нее больше возвращаться не надо, а вот с активити, которые составляют основной рабочий функционал? Какие основные особенности у активити, которая просто уходит в спящий режим?
...
Рейтинг: 0 / 0
проверка connection, обработка исключений в asyncTask
    #39830843
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ЛаловНормально ли хранить текущее соединение в глобальной переменной
у каждого варианта свои недостатки. с одной стороны установка соединения - дорогостоящая операция и ее нужно делать как можно реже. с другой стороны телефон может уходить в сон и коннект может протухнуть, т.е. при постоянно висящем коннекте придется еще его проверять на валидность. кроме того база может иметь ограничения по кол-ву одновременно висящих коннектов. так что я бы выбрал вариант устанавливать соединение когда нужно и обрывать после получения данных. А вообще, как я уже писал в другом топике, всю идею с коннектом на клиенте я нахожу ущербной.

Сергей Лалова вот с активити, которые составляют основной рабочий функционал?
зависит от того, много ли ресурсов они потребляют (загружают ли например картинки, какие-то блобы и т.п.). В целом это не вопрос жизни и смерти. Можно начать их закрывать сразу, а в запущенной активити реализовывать возврат к предыдущей. А можно не заниматься преждевременной оптимизацией - возможно пара висящих в бэкстэке активити никаких проблем не создадут. Главное чтоб user experience был сохранен, т.е. нажав "назад" на Activity-B пользователь должен оказаться в Activitiy-A. Покуда это происходит и введенные данные никуда не пропали, все равно как
...
Рейтинг: 0 / 0
проверка connection, обработка исключений в asyncTask
    #39831792
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По сравнению с прошлой задачей изучил поверхностно RecycleView и сделал простую реализацию вывода списка фиксированных значений в этот список. Потестировал в отдельно созданном проекте, все работает, код в main отрабатывает отлично.
Решил интегрировать данный список в текущий проект, чтобы при переходе с формы аутентификации (Main Activity) во вторую форму (SecondActivity) при открытии этой второй активити генерился данный список. Повторил абсолютно все действия из отдельного проекта с работающим RecicleView, но приложение вылетает.

Вот код в SecondActivity, он простой:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
public class SecondActivity extends AppCompatActivity  {

    MyRecyclerViewAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // data to populate the RecyclerView with
        ArrayList<String> animalNames = new ArrayList<>();
        animalNames.add("Horse");
        animalNames.add("Cow");
        animalNames.add("Camel");
        animalNames.add("Sheep");
        animalNames.add("Goat");
        // set up the RecyclerView
        RecyclerView recyclerView = findViewById(R.id.rvAnimals);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        adapter = new MyRecyclerViewAdapter(this, animalNames);
        recyclerView.setAdapter(adapter);
    }
}



Класс где собирается RecicleView тоже упрощен:
Код: 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.
public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder> {

    private List<String> mData;
    private LayoutInflater mInflater;
    private ItemClickListener mClickListener;

    // data is passed into the constructor
    MyRecyclerViewAdapter(Context context, List<String> data) {
        this.mInflater = LayoutInflater.from(context);
        this.mData = data;
    }

    // inflates the row layout from xml when needed
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = mInflater.inflate(R.layout.recyclerview_row, parent, false);
        return new ViewHolder(view);
    }

    // binds the data to the TextView in each row
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        String animal = mData.get(position);
        holder.myTextView.setText(animal);
    }

    // total number of rows
    @Override
    public int getItemCount() {
        return mData.size();
    }


    // stores and recycles views as they are scrolled off screen
    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        TextView myTextView;

        ViewHolder(View itemView) {
            super(itemView);
            myTextView = itemView.findViewById(R.id.tvAnimalName);
            itemView.setOnClickListener(this);
        }

        @Override
        public void onClick(View view) {
            if (mClickListener != null) mClickListener.onItemClick(view, getAdapterPosition());
        }
    }

    // convenience method for getting data at click position
    String getItem(int id) {
        return mData.get(id);
    }

    // allows clicks events to be caught
    void setClickListener(ItemClickListener itemClickListener) {
        this.mClickListener = itemClickListener;
    }

    // parent activity will implement this method to respond to click events
    public interface ItemClickListener {
        void onItemClick(View view, int position);
    }
}



Если эти два кода запускать в отдельном проекте , все работает. При загрузке к примеру в MainActivity в отдельном проекте все работает отлично. А вот при переносе из этого отдельного проекта в действующий возникла проблема, что когда запускается переход с формы аутентификации на вторую активити приложение вылетает.
(Я все добавил, не забыл отдельный файл xml для макета строки в recycleView. Элемент этот также присутствует в библиотеках проекта и загружен). Асинхронность тут тоже не причем как понимаю, так как построение recycleView идет в теле onCreate (Все отрабатывало в отдельном тестовом проекте примере).

Переход из первую активити во вторую осуществляется так, из асинхронного запроса :

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
@Override
    protected void onPostExecute(Boolean result) {
        if (result == true ) {
            System.out.println(result);
            Toast ts = Toast.makeText(context, "Добро пожаловать!", Toast.LENGTH_LONG);
            ts.setGravity(Gravity.TOP, 0, 350);
            ts.show();
            Intent intent = new Intent(context, SecondActivity.class);
           intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent);




Ссылок во второй активити на тяжелые элементы типа Connection нет, ничего такого. Не понимаю причин вылета, может экземпляр какой то не тот открывается, не могу отловить ошибку.
Логи тоже не помогают ,не могу понять где ошибка:

2019-06-28 18:58:37.379 5541-5541/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.myapplication, PID: 5541
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapplication/com.example.myapplication.SecondActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.recyclerview.widget.RecyclerView.setLayoutManager(androidx.recyclerview.widget.RecyclerView$LayoutManager)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3260)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3396)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2009)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7319)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:934)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.recyclerview.widget.RecyclerView.setLayoutManager(androidx.recyclerview.widget.RecyclerView$LayoutManager)' on a null object reference
at com.example.myapplication.SecondActivity.onCreate( SecondActivity.java:27 )
at android.app.Activity.performCreate(Activity.java:7783)
at android.app.Activity.performCreate(Activity.java:7772)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3235)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3396) 
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2009) 
at android.os.Handler.dispatchMessage(Handler.java:107) 
at android.os.Looper.loop(Looper.java:214) 
at android.app.ActivityThread.main(ActivityThread.java:7319) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:934) 
...
Рейтинг: 0 / 0
проверка connection, обработка исключений в asyncTask
    #39831793
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, все, разобрался. Ошибка типа копипаст, все работает.
...
Рейтинг: 0 / 0
проверка connection, обработка исключений в asyncTask
    #39832237
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ЛаловА, все, разобрался. Ошибка типа копипаст, все работает.
вообще-то по ошибке отлично видно что не так
java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.recyclerview.widget.RecyclerView.setLayoutManager(androidx.recyclerview.widget.RecyclerView$LayoutManager)' on a null object reference

твой recyclerview в момент обращения к setLayoutManager - null, т.е. он не нашелся в предущей строчке по findViewById(R.id.rvAnimals)

в AndroidStudio и в IDEA есть Analyze -> Analyze Stack trace - вставляешь ошибку целиком и можно перейти прямиком на строку с ошибкой. Впрочем если само сообщение не понятно, это может не помочь.
...
Рейтинг: 0 / 0
проверка connection, обработка исключений в asyncTask
    #39832499
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,

Спасибо! В принципе в logcate тоже можно настроить фильтрацию по типу ошибок и перейти при необходимости на больную строку.

В данном случае nullpointexeption это уже как следствие другой ошибки. Копипастнул, не заметил что recycleview выводиться то собственно должен на secondActyvity , а при копировании вывод так и остался на mainActivity из моего тестового примера. Как результат - два часа убито на поиск одной неправильно указанной переменной)) зато с логами научился разбираться немного.

Немного по теме топика, не по основному вопросу : протестировал соединение как через jdbc так и через http. Субъективно, что так, что этак время соединения /пинга одинаковое. При краше соединения , что так что этак приходиться обновлять соединение и осуществлять повторно соединение. По времени столько же ,геммор сопоставим по времени. В jdbc после подключения оно как бы засыпает и ждёт следующего обращения, батарея минимально напрягается. Не знаю, видимо все таки jdbc ,не любят именно в силу прямого небезопасного соединения , хотя это тоже условно. Ломают то в основном как раз по 80 порту сайты и хосты , использующие классические http запросы.
...
Рейтинг: 0 / 0
проверка connection, обработка исключений в asyncTask
    #39832797
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лаловгеммор сопоставим по времени
это не так. http делается намного проще в силу того, что это типичная задача для андроид. например так

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public interface GitHubService {
  @GET("users/{user}/repos")
  Call<List<Repo>> listRepos(@Path("user") String user);
}

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://api.github.com/")
    .build();

GitHubService service = retrofit.create(GitHubService.class);
List<Repo> repos = service.listRepos("octocat").execute().body();



с jdbc так же элегантно ты не напишешь еще очень долго, а может даже никогда. работают ли на андроид (и как работают) обычные для явы orm/аctiverecord фреймворки - большой вопрос.

Сергей ЛаловНе знаю, видимо все таки jdbc ,не любят именно в силу прямого небезопасного соединенияне только. еще из-за того, что у тебя апп становится зависим от совершенно конкретной реализации бэкенда (т.е. базы mysql, я уже не говорю про то, что нужна будет дьявольская дисциплина и планирование, чтобы никакие изменения в БД тут же не поломали все клиенты разом), а совместимость jdbc драйвера с любым устройством в дикой природе остается под большим вопросом. Так же под вопросом работа приложения внутри корпоративной сети, где могут быть закрыты все порты кроме стандартных. На мой взгляд масса недостатков и только одно преимущество - не надо писать backend.
...
Рейтинг: 0 / 0
проверка connection, обработка исключений в asyncTask
    #39832989
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha......
еще из-за того, что у тебя апп становится зависим от совершенно конкретной реализации бэкенда (т.е. базы mysql, я уже не говорю про то, что нужна будет дьявольская дисциплина и планирование, чтобы никакие изменения в БД тут же не поломали все клиенты разом), а совместимость jdbc драйвера с любым устройством в дикой природе остается под большим вопросом. Так же под вопросом работа приложения внутри корпоративной сети, где могут быть закрыты все порты кроме стандартных. На мой взгляд масса недостатков и только одно преимущество - не надо писать backend.

Немного знаю PHP , написать страничку аутентификации с вводом логина и пароля смогу)) Ну и вывести данные в формате Json в качестве response тоже смогу. Но сейчас все обросло фреймворками, примеры жесткие в сети. Вот к примеру вывести JSON в RecycleView пока для меня вообще жесть. Как кэшировать это все на стороне клиента и как этот кэш ведет себя, когда приложение неактивно в фоновом режиме, итд итп..жестко.
...
Рейтинг: 0 / 0
проверка connection, обработка исключений в asyncTask
    #39833250
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ЛаловНо сейчас все обросло фреймворками, примеры жесткие в сети
обычно с frameowork-ами как в том мультике про "крылья ноги и хвосты". сначала теряешь день, но зато потом долетаешь быстрее и надежнее

Сергей ЛаловВот к примеру вывести JSON в RecycleView
выводить нужно объекты, полученные из json - ява типизированный язык и нужно этом пользоваться. а так да, концепция RecyclerView слегка зубодробительная для новичка. Мягко выражаясь.
...
Рейтинг: 0 / 0
проверка connection, обработка исключений в asyncTask
    #39833455
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaСергей ЛаловНо сейчас все обросло фреймворками, примеры жесткие в сети
обычно с frameowork-ами как в том мультике про "крылья ноги и хвосты". сначала теряешь день, но зато потом долетаешь быстрее и надежнее

А что лучше по вашему мнению Retrofit или Volley? Копать сразу два просто времени нет, сначала какой нибудь один, попроще и ближе к человеку)

chpashaвыводить нужно объекты, полученные из json - ява типизированный язык и нужно этом пользоваться. а так да, концепция RecyclerView слегка зубодробительная для новичка. Мягко выражаясь.

Концепция сборки вью да, сколько примеров в сети, и везде разный подход))
...
Рейтинг: 0 / 0
проверка connection, обработка исключений в asyncTask
    #39833478
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ЛаловА что лучше по вашему мнению Retrofit или Volley?
я бы взял retrofit - это гораздо более высокоуровневая и простая в использовании либа. Volley - очередной гугловский высер, с тоннами кода на каждый чих. Да и разбираться с retrofit нефиг делать - после просмотра примеров уже на 90% все понятно. Остаются только всякие мелочи типа кастомной сериализации, авторизации и пр., которые не факт что понадобятся.
...
Рейтинг: 0 / 0
проверка connection, обработка исключений в asyncTask
    #39833917
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,

Спасибо! Погрузился в Retrofit. Курю понемногу вторые сутки, нашел пару рабочих примеров под ключ. Надо отдать должное индусам, нация программистов, можно найти код именно под свое восприятие ))
...
Рейтинг: 0 / 0
проверка connection, обработка исключений в asyncTask
    #39932550
nerv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня похожий вопрос. использую в работе MS SQL базу.
Подключение к ней реализовано в классе AsyncTask (использовал jtdc драйвер) главного Activity. После успешного подключения из главного Activity могу делать запросы к таблицам через этот открытый connection. Сам connection закрываю в методе OnDestroy().
Планирую во время работы приложения держать этот connection открытым, чтобы не переподключаться к базе данных.
Но вот как мне обратиться к открытому connection из другого Activity (используя этот самый открытый connection)?
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / проверка connection, обработка исключений в asyncTask
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]