0

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

4

2 回答 2

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();
    }
}

您上面描述的问题非常笼统,因此解释任何特定的实现都无济于事。

如果您希望您的工作人员类完成工作,即使您的活动进入 onPause,那么是的,您可能希望在另一个线程中完成工作,并且可能在服务中完成工作。不过,您仍然可以拥有您的工人阶级,以实现良好的 OO 并遵守 SRP。

于 2013-07-06T14:09:38.077 回答
0

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

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

于 2013-07-06T14:28:21.343 回答