启动任务,离开应用程序并返回以查看它已完成
Initiating a task, navigating away from the app and coming back to see it completed
...又是我的学习之旅Android服务...
我多次注意到,作为用户,您可以通过单击应用程序上的按钮来启动任务,然后离开该应用程序。当你回来时,你发现任务完成了。许多应用程序都这样做。
这种行为的正确设计是什么?任务是作为 activity 的一部分在 UI 线程上完成的,它是异步任务还是服务?
我唯一能想到的就是服务,因为当 OS 终止应用程序时它会继续存在,从而能够完成任务。
然而,我发现使用服务来做任何事都太过头了。
评论?
我认为一个好的做法是 运行 任何异步操作并将重要值存储在 SaveInstance 状态上。例如像这样:
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putBoolean("MYBOOL", true);
outState.putString("MYSTRING", "Hello World");
super.onSaveInstanceState(outState);
}
然后在 onCreate 方法上:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
if(savedInstanceState != null){
boolean myBool = savedInstanceState.getBoolean("MYBOOL");
String myString = savedInstanceState.getString("MYSTRING");
}
}
那是为了存储重要的变量...如果你想刷新任何数据以便当用户返回时发现它已加载,只需在异步任务中执行并在 onPostExecute 刷新数据通知适配器的任何更改.
...又是我的学习之旅Android服务...
我多次注意到,作为用户,您可以通过单击应用程序上的按钮来启动任务,然后离开该应用程序。当你回来时,你发现任务完成了。许多应用程序都这样做。
这种行为的正确设计是什么?任务是作为 activity 的一部分在 UI 线程上完成的,它是异步任务还是服务?
我唯一能想到的就是服务,因为当 OS 终止应用程序时它会继续存在,从而能够完成任务。 然而,我发现使用服务来做任何事都太过头了。
评论?
我认为一个好的做法是 运行 任何异步操作并将重要值存储在 SaveInstance 状态上。例如像这样:
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putBoolean("MYBOOL", true);
outState.putString("MYSTRING", "Hello World");
super.onSaveInstanceState(outState);
}
然后在 onCreate 方法上:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
if(savedInstanceState != null){
boolean myBool = savedInstanceState.getBoolean("MYBOOL");
String myString = savedInstanceState.getString("MYSTRING");
}
}
那是为了存储重要的变量...如果你想刷新任何数据以便当用户返回时发现它已加载,只需在异步任务中执行并在 onPostExecute 刷新数据通知适配器的任何更改.