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

fix(android)(8_1_X): call WebView.stopLoading() from main thread #11171

Closed
wants to merge 1 commit into from

Conversation

garymathews
Copy link
Contributor

@garymathews garymathews added this to the 8.1.1 milestone Aug 22, 2019
@garymathews garymathews requested a review from ypbnv August 22, 2019 18:16
@build build requested a review from a team August 22, 2019 18:39
@build
Copy link
Contributor

build commented Aug 22, 2019

Messages
📖

💾 Here's the generated SDK zipfile.

📖

✅ All tests are passing
Nice one! All 3738 tests are passing.
(There are 470 tests skipped)

Generated by 🚫 dangerJS against 4676285

@@ -1066,7 +1069,13 @@ public void reload()

public void stopLoading()
{
getWebView().stopLoading();
new Handler(getMainLooper()).post(new Runnable() {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't we have a different code pattern for dispatching method calls to happen on the main thread? (like a public handleMessage() method with a switch statement)?

Also, is this the only call that needs to happen on the ui thread? What about goForward(), goBack(), etc?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What Gary is solving is not thread related. He is doing the equivalent of a JS setTimeout(function, 0). He's posting a runnable to the end of the event queue, which is something you may to do if the method is being called from the same object's callback (ie: you need to unwind the stack before performing the action). I can see this being an issue with the onlink callback since it needs immediately feedback before loading a URL. Although I wouldn't think our WebView events would have this problem since they're queued and not invoked immediately.

I too am curious regarding goForward(), goBack(), and other APIs.

Regarding Handler, I'd prefer that we use it for cases like this. It's simpler and it's what most native Android devs use. handleMessage() is more complicated and error prone (message ID collision has happened in our code in the past) and its only real advantage is that it allows inherited classes to override the handling of received message, which isn't applicable here.

Side Note:
Gary, you don't need to create a new main handler here. There is a View.getHandler() method that you can use instead.
https://developer.android.com/reference/android/view/View#getHandler()

@sgtcoolguy sgtcoolguy modified the milestones: 8.1.1, 8.1.2 Aug 30, 2019
@garymathews
Copy link
Contributor Author

Closing, marked for 8_3_X

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

Successfully merging this pull request may close these issues.

None yet

4 participants