应用程序完成后如何从服务器获取数据?

时间:2015-04-18 09:28:26

标签: android

我正在编写一个应用程序来解析来自我的服务器的数据(我通过WAMP创建服务器)并警告数据是否达到某个阈值(振动,播放声音......)。因此,我希望我的应用程序在应用程序完成时仍然会收到数据警告。我知道android中的服务可以做到这一点,但我不知道写一个服务类。所以,如果你知道,请帮助我。   我已解析数据,并在Android应用程序上显示它。我的应用程序自动从服务器获取数据3分钟。 这是代码:

public class CurrentData extends Fragment {

public CurrentData() {
    super();
    // TODO Auto-generated constructor stub
}

TextView id;
TextView temp;
TextView acc;
TextView moisture;
TextView battery;
TextView date;
TextView time;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.currentdata_layout,
            container, false);
    id = (TextView) rootView.findViewById(R.id.showID);
    temp = (TextView) rootView.findViewById(R.id.showTEMP);
    acc = (TextView) rootView.findViewById(R.id.showACC);
    moisture = (TextView) rootView.findViewById(R.id.showMoisture);
    battery = (TextView) rootView.findViewById(R.id.showBat);
    date = (TextView) rootView.findViewById(R.id.showDATE);
    time = (TextView) rootView.findViewById(R.id.showTIME);

    callAsynTask();
    return rootView;
}

private void callAsynTask() {
    final Handler handler = new Handler();
    Timer timer = new Timer();
    TimerTask doAsynTask = new TimerTask() {

        @Override
        public void run() {
            handler.post(new Runnable() {

                @Override
                public void run() {
                    try {
                        new GetInfo().execute();

                    } catch (Exception e) {
                    }

                }
            });

        }
    };
    timer.schedule(doAsynTask,0, 180000);
}

public class GetInfo extends AsyncTask<String, Void, Parameter> {

    @Override
    protected Parameter doInBackground(String... arg0) {
        String data = ((new LandSlideHttpClient().getDeviceData()));
        Parameter parameter = new Parameter();
        try {
            parameter = JSONLandslideParser.getParameter(data);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return parameter;
    }

    @Override
    protected void onPostExecute(final Parameter result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);

        id.setText(result.id.getID());
        temp.setText(" " + result.currentData.getTemp());// + "  °C");
        acc.setText(" " + result.currentData.getAcc());// + "  m/s2");
        moisture.setText(" " + result.currentData.getMoisture());// +
                                                                    // "  mps");
        battery.setText(" " + result.currentData.getBattery());// + "  %");
        date.setText(result.currentData.getDate());
        time.setText(result.currentData.getTime());
        new warning(); // class to alert

    }

}

}

1 个答案:

答案 0 :(得分:0)

您需要创建后台服务。如果您使用的是android studio,那么创建服务非常容易。只需确保您必须拥有有关服务的所有必要信息以及如何在后台持久保存。

因此,您的应用程序将大大耗尽您的设备电池。了解有关服务生命周期的每个细节。

有关详细信息,请参阅此链接

  1. https://developer.android.com/training/run-background-service/create-service.html
  2. http://www.vogella.com/tutorials/AndroidServices/article.html
  3. http://javatechig.com/android/creating-a-background-service-in-android
  4. http://www.tutorialspoint.com/android/android_services.htm