You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Feb 26, 2023. It is now read-only.
Repository navigation
This repository was archived by the owner on Feb 26, 2023. It is now read-only.
Optionally ignore @UIThread call when @EFragment is detached from Activity? #875
When using @Background in conjunction with @UIThread annotations on an @EFragment, it's possible that many developers don't want to run the method annotated with the @UIThread annotation if the Fragment is no longer attached to the activity. I think it would be great to add an annotation (something like @IgnoredWhenDetached) with the following rules:
Must also have the @UIThread annotation
Can only be used in conjunction with @EFragment classes
Simply wraps the @UIThreadmethod call in an if block like so
if(isAdded()) {
//executable code
}
or
if(getActivity() != null) {
//executable code
}
Here is a simple example and in my application I have dozens of things similar to this
This essentially prevents the two @UIThread methods from getting a NPE if the Fragment were to have been destroyed at any point during the execution of the @Background method. While I realize this is something that can be easily guarded against by a simple null check, it makes the code much cleaner and is a very common use case in conjunction with Fragments. I would be more than happy to submit a pull request pending thoughts/comments about this. This could also be useful in conjunction with @Background on an @EFragment as well, but not a very common use case.
I read his actually before posting this. This is slightly different in that I'm not proposing making it the default behavior of @UIThread for @EFragment classes.
I tought about the API, and bringed up a version which uses a parameter in the @UiThread and not a new annotation. But i changed my mind since this feature is only for Fragments, @UiThread API should not be affected.
I think you can start to implement this if you want. :)
When using
@Backgroundin conjunction with@UIThreadannotations on an@EFragment, it's possible that many developers don't want to run the method annotated with the@UIThreadannotation if the Fragment is no longer attached to the activity. I think it would be great to add an annotation (something like@IgnoredWhenDetached) with the following rules:@UIThreadannotation@EFragmentclasses@UIThreadmethod call in an if block like soor
Here is a simple example and in my application I have dozens of things similar to this
This essentially prevents the two
@UIThreadmethods from getting a NPE if the Fragment were to have been destroyed at any point during the execution of the@Backgroundmethod. While I realize this is something that can be easily guarded against by a simple null check, it makes the code much cleaner and is a very common use case in conjunction with Fragments. I would be more than happy to submit a pull request pending thoughts/comments about this. This could also be useful in conjunction with@Backgroundon an@EFragmentas well, but not a very common use case.Vince