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