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