2017-01-18 8 views
0

У меня есть база данных SQL, которая работает, и broadcast receiver, что функции, но я не могу показаться, чтобы получить информацию из базы данных, в глобальных переменных (latInfo, LonInfo) поэтому я могу использовать их для ввода данных в базу данных. BroadcastReceiver получает информацию от службы, которая получает координату gps LocationManager, а location_text - это textview, который обновляется каждый раз, когда устанавливается новый набор координат.Перенос данных из onRecieve в базу данных SQL в Android Studio

@Override 
    protected void onResume() { 
     super.onResume(); 
     if(br == null){ 
      br = new BroadcastReceiver() { 
       @Override 
       public void onReceive(Context context, Intent z) { 
        //location_text.append("\n" + z.getExtras().get("coordinates")); 
        latInfo = (double) z.getExtras().get("latitude"); 
        lonInfo = (double) z.getExtras().get("longitude"); 
        String x = "Latitude: " + latInfo + ", Longitude: " + lonInfo + "\n"; 
        location_text.append(x); 

       } 

      }; 

     } 

     registerReceiver(br, new IntentFilter("location_update")); 
    } 

Это метод, который я хочу реализовать, чтобы добавить данные в базу данных проще говоря, когда данные, которые я могу получить в глобальные переменные (lonInfo, latInfo) зарегистрирован ниже классом, он вызывает другую класс, чтобы получить сигнал ячейки cdmaSignal, и все три вставлены в базу данных.

public void infoCollection(){ 
     if(lonInfo != 0 && latInfo != 0){ 
      cdmaInfo = sl.cdmaSignal; 

      SQLInfoDatabase sid = new SQLInfoDatabase(cdmaInfo,lonInfo,latInfo); 

      cdmaSignal.setText(cdmaInfo); 

      dbh.addInfo(sid); 
     } 
    } 

Как получить полученные данные от метода onReceieve остаться в качестве глобальных переменных между обновлениями служб?

ответ

1

вы можете сделать статическую переменные или можете использовать одноэлементный класс

ниже образец одноплодного класса

public class SharedClass 
{ 
    private static SharedClass sharedClass; 

    // global variables 
    public double latInfo, LonInfo; 

    public static SharedClass getInstance() 
    { 
     if (sharedClass == null) 
      sharedClass = new SharedClass(); 

     return sharedClass; 
    } 

    private SharedClass() 
    { 
    } 
} 

вы можете получить доступ к latInfo или LonInfo из любого приложения, делая это

SharedClass.getInstance().latInfo 
SharedClass.getInstance().LonInfo 
+0

у вас есть другие варианты? –

+0

singleton класс - хороший вариант. В чем проблема? – Omer

+0

В основном потому, что я никогда раньше не использовал его. У меня нет проблем с этим, но я надеялся на более прямое решение. Как строка кода для ограничения getExtras. я довольно новичок в программировании, поэтому мне пришлось бы исследовать его некоторое время. –