instead, schedule a queued finished signal to unregister the listener after the handler has finished.
See PythonActivity.java in P4A for why this probably causes the most often occurring crash we see on the Play Store:
```
Exception java.lang.RuntimeException:
at android.app.ActivityThread.deliverResults (ActivityThread.java:5164)
at android.app.ActivityThread.handleSendResult (ActivityThread.java:5205)
at android.app.servertransaction.ActivityResultItem.execute (ActivityResultItem.java:51)
at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2136)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loop (Looper.java:236)
at android.app.ActivityThread.main (ActivityThread.java:8061)
at java.lang.reflect.Method.invoke
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:656)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:967)
Caused by java.util.ConcurrentModificationException:
at java.util.ArrayList$Itr.next (ArrayList.java:860)
at org.kivy.android.PythonActivity.onActivityResult (PythonActivity.java:218)
at android.app.Activity.dispatchActivityResult (Activity.java:8501)
at android.app.ActivityThread.deliverResults (ActivityThread.java:5157)
```
Instead of some functions operating with hex strings,
and others using bytes, this consolidates most things to use bytes.
This mainly focuses on bitcoin.py and transaction.py,
and then adapts the API usages in other files.
Notably,
- scripts,
- pubkeys,
- signatures
should be bytes in almost all places now.
follow-up https://github.com/spesmilo/electrum/pull/8713
```
1.35 | E | __main__ | daemon.run_gui errored
Traceback (most recent call last):
File "/home/user/wspace/electrum/./run_electrum", line 458, in handle_cmd
d.run_gui()
File "/home/user/wspace/electrum/electrum/daemon.py", line 623, in run_gui
self.gui_object = gui.ElectrumGui(config=self.config, daemon=self, plugins=self._plugins)
File "/home/user/wspace/electrum/electrum/util.py", line 482, in do_profile
o = func(*args, **kw_args)
File "/home/user/wspace/electrum/electrum/gui/qml/__init__.py", line 82, in __init__
self.app = ElectrumQmlApplication(sys.argv, config=config, daemon=daemon, plugins=plugins)
File "/home/user/wspace/electrum/electrum/gui/qml/qeapp.py", line 428, in __init__
self.plugins.load_plugin('trustedcoin')
File "/home/user/wspace/electrum/electrum/plugin.py", line 269, in load_plugin
raise Exception(f"could not find plugin {name!r}")
Exception: could not find plugin 'trustedcoin'
```