Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Task created in a session that has been invalidated #45

Closed
lihanst opened this issue Mar 25, 2019 · 5 comments
Closed

Task created in a session that has been invalidated #45

lihanst opened this issue Mar 25, 2019 · 5 comments

Comments

@lihanst
Copy link

lihanst commented Mar 25, 2019

析构一个 TRManager 后重新创建,会导致这个崩溃,我想在不同用户下创建不同的 TRManager。

@Danie1s
Copy link
Owner

Danie1s commented Mar 25, 2019

我明白你的需求了

实现后台下载的第一规则:TRManager必须在App启动时创建

而你这个需求的解决方法:
给AppDelegate添加一个可选属性manager,用户登录的时候,创建独自的manager,identifier跟用户关联,同时赋值给AppDelegate的属性,把identifier保存到沙盒的文件里

在didFinishLaunchingWithOptions方法读沙盒的文件,根据identifier创建manager,同时赋值给AppDelegate的属性,在handleEventsForBackgroundURLSession里就可以拿到对应的manager。

切换用户的时候,应该把当前用户的下载任务都暂停,然后销毁当前用户的manager,再创建新的manager

@Danie1s Danie1s closed this as completed Mar 25, 2019
@lihanst
Copy link
Author

lihanst commented Mar 25, 2019

我第一次创建 TRManager 并不是在 didFinishLaunchingWithOptions 方法里,然后并不会出现问题,问题出在我切换用户重新构建新的 TRManager 后再去进行下载的时候。

@Danie1s
Copy link
Owner

Danie1s commented Mar 25, 2019

请你按照我说的方法尝试一下

@lihanst
Copy link
Author

lihanst commented Mar 25, 2019

必须要在 APP 启动时创建么?我需要根据用户来创建 Manager,但是此时用户还没有登录怎么办呢?我现在发现的问题是,第一次且不在 APP 启动时创建 Manager 并不会有问题,但是重复创建相同 identifier 的 Manager 再进行下载操作就会导致这个崩溃的出现。我试过在 app 启动时创建 manager,之后销毁再重新创建新的有相同 identifier 的 manager(即用户退出登录又重新登录),此时崩溃是必现的。但是创建不同 identifier 的 manager 没有问题(用户换了帐号登录)。

@Danie1s
Copy link
Owner

Danie1s commented Mar 25, 2019

呃。。。。你好像没理解我说的做法,你先跟着我说的做一边,再去理解这样做的意义。

同一个用户是同一个identifier,此时不销毁manager即可。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants