当我让它在后台运行时,我的应用程序一直崩溃,然后回到屏幕上显示应用程序。我相信它与我在onResume()中运行的AsyncTask有关。在其中一条评论的answer中,该人告诉"保持活动实例的跟踪并使异步任务等待它不为空。"那么我究竟该如何让它等到它不为空呢?
一般而言,当您在Fragment中运行AsyncTask时,最活跃的方式是什么才能在活动/片段生命周期更改期间工作?
答案 0 :(得分:1)
首先,您可以在创建片段时使用包含该片段的活动对getactivity()进行类型转换,并使 mActivity 全局变量。
MainActivity mActivity = (MainActivity)getActivity();
您可以在Asynctask中进一步使用该变量,并可以进一步检查活动是否已完成(不检查null)
mActivity.isFinished();
答案 1 :(得分:0)
在后台或后台堆栈中,永远不要指望x = np.array([1,2,3,4,5])
index = np.argwhere(x==3)
y = np.delete(x, index)
print(x, y)
正在运行(或甚至存在)。将Activity
置于保留的AsyncTask
中是保持任务在配置更改(例如,设备轮换)之间运行的好方法,但不是在活动在后台时。任何应该在后台运行的东西都属于Fragment
。
答案 2 :(得分:-1)
不推荐。如果您需要在AsyncTask中访问您的活动,那么最好的方法是创建一个接口,让您的活动实现此接口并在AsyncTask构造函数上传递活动实例。您的AsyncTask将需要接口类型的属性。因此,您可以通过此接口调用活动上实现的方法