【问题标题】:Android continuous acceleration processing in backgroundAndroid后台持续加速处理
【发布时间】:2013-01-30 15:13:59
【问题描述】:

我正在开发一个应用程序,它需要在一段时间内(大约一个小时)连续处理加速度值 - 是的,我真的很想这样做。该处理涉及进行一些计算并不时更新 UI。加速度是在(前台)服务中收集的 - 如果用户也最小化应用程序,则应该会收集加速度。

我的问题是:实现这一点最合适的模式是什么?我不希望处理使应用 UI 无响应。

现在我正在 UI 线程(在服务中)收集加速度数据。然后将收集到的数据传递给执行一些计算的类,并根据它们广播一个 Intent,该 Intent 注册在 Main 活动中以更新 UI。

我应该在服务的工作线程中收集加速度数据吗? (这甚至可能)? 或者我应该在另一个线程中进行处理? (在不使 UI/加速收集线程或处理线程挨饿的情况下,如何做到这一点的最佳方法是)?

谢谢!

【问题讨论】:

    标签: android accelerometer sensors


    【解决方案1】:

    您当然应该在后台线程中进行任何重要的处理。最简单的方法听起来只是将其放入从现有Service 调用的AsyncTask 中。您可以将您的处理移至doInBackground。另一种选择是创建一个单独的IntentService 来处理您的处理,但我认为AsyncTask 应该足够了。

    【讨论】:

      【解决方案2】:

      尝试异步任务

      public class AsyncTaskTestActivity extends Activity {
      
         @Override
         public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
      
            new PostTask().execute();
         }
      
         // The definition of our task class
         private class PostTask extends AsyncTask<String, Integer, String> {
         @Override
         protected void onPreExecute() {
            super.onPreExecute();
            displayProgressBar("Working...");
         }
      
         @Override
         protected String doInBackground(String... params) {
               do_background_Stuff();
      
               // call this method whenever you want to run something in the UI thread and then get back to processing
               publishProgress(i);
            }
            return "All Done!";
         }
      
         @Override
         protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);
            updateProgressBar(values[0]);
         }
      
         @Override
         protected void onPostExecute(String result) {
            super.onPostExecute(result);
            dismissProgressBar();
         }
         }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-10
        • 1970-01-01
        • 2013-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多