从Activity调用类时会发生坏事吗?

时间:2013-07-06 14:04:57

标签: android

我正在调用我的Activity中的一个类。我正在调用的类不会扩展服务或活动。它只是我用来处理BufferedReader对象的worker类。我担心如果应用程序在处理BufferedReader期间失去焦点,我可能会留下凌乱的数据。那么当我的Activity调用一个类来执行数据库条目并且Activity失去焦点时会发生什么。我正在考虑使我的工作类成为一个服务,以便我可以访问OnPause和OnResume方法。不确定我应该做什么。有没有其他人有这方面的线索。

2 个答案:

答案 0 :(得分:1)

您必须利用Android Activity Lifecycle

class MyActivity extends Activity {
    private MyWorkerClass myWorkerClass;

    void onCreate() {
      myWorkerClass = new MyWorkerClass();
      myWorkerClass.startLoading();
    }

    void onPause() {
      // You know the activity is going into the background
      // so act appropriately in your worker class
      myWorkerClass.stopLoading();
    }
}

您在上面描述的问题非常通用,因此解释任何具体实施都无济于事。

如果你希望你的工人类完成工作,即使你的Activity进入onPause然后是,你也希望在另一个线程和可能的服务中完成工作。你仍然可以拥有你的工人阶级,但是对于好的OO&坚持SRP。

答案 1 :(得分:0)

如果它是一个简单的一次性任务,您可以创建IntentService,如果这是一个连续的任务,您可以扩展Service类。另外,请查看AsyncTaskLoader

如果正在终止应用程序进程,则需要确保不要使IO介质处于不一致状态或数据损坏。因此,在数据库的情况下使用事务,写入临时文件并在文件IO的情况下最后替换,在远程IO的情况下使用确认请求。