所以我有一个异步任务,它在doInBackground中进行一些操作然后在onPostExecute中我在完成后向共享偏好添加变量我想要使用这些值,但它们不会更新。我需要更新'我的活动,如改变方向或某事。似乎Async任务在最后执行,即使之后有一些代码。
在我的活动中:
myAsyncTask.execute(location1);
System.out.println("Current_time: " + sharedPreferences.getString("CURRENT_TIME", ""));
在ASyncTask onPostExecute中:
editor.putString("CURRENT_TIME", channel.getItem().getCondition().getDate());
Log.i("SetValues", "now");
editor.apply();
结果是:
I/System.out: Current_time: Mon, 30 Apr 2018 07:00 PM YEKT
I/SetValues: now
我想要的是完成异步任务然后休息,所以首先是SetValues'然后打印。
答案 0 :(得分:0)
如果要查看任务的结束时间,则需要将当前时间的打印移至onPostExecute
。
现在它正在打印AsyncTask的开始时间。
答案 1 :(得分:0)
异步任务与ui thread分开运行。在执行此操作后,ui不等待完成此任务并继续执行其他行。在异步任务中有一些过度方法,这些方法在不同的事件上被调用。其中一个是异步任务完成任务完成后调用的onPostExecute意味着doin后台方法完成。所以如果你想在一个asynctask执行后做一些事情,那么你必须在onPost执行方法上执行此操作。那么你是否共享prf在onPostExecute方法上运行