diff --git a/application/donations/src/main/java/org/videolan/vlc/donations/util/IabHelper.kt b/application/donations/src/main/java/org/videolan/vlc/donations/util/IabHelper.kt index 53bb462be..17fc5d86a 100644 --- a/application/donations/src/main/java/org/videolan/vlc/donations/util/IabHelper.kt +++ b/application/donations/src/main/java/org/videolan/vlc/donations/util/IabHelper.kt @@ -21,10 +21,7 @@ import android.content.Context import android.content.Intent import android.content.IntentSender.SendIntentException import android.content.ServiceConnection -import android.os.Bundle -import android.os.Handler -import android.os.IBinder -import android.os.RemoteException +import android.os.* import android.text.TextUtils import android.util.Log import com.android.vending.billing.IInAppBillingService @@ -522,11 +519,11 @@ class IabHelper(ctx: Context, base64PublicKey: String?) { */ fun queryInventoryAsync(querySkuDetails: Boolean, moreSkus: List?, listener: QueryInventoryFinishedListener?) { - val handler = Handler() + val handler = Handler(Looper.getMainLooper()) checkNotDisposed() checkSetupDone("queryInventory") flagStartAsync("refresh inventory") - Thread(Runnable { + Thread { var result = IabResult(BILLING_RESPONSE_RESULT_OK, "Inventory refresh successful.") var inv: Inventory? = null try { @@ -540,7 +537,7 @@ class IabHelper(ctx: Context, base64PublicKey: String?) { if (!mDisposed && listener != null) { handler.post { listener.onQueryInventoryFinished(result_f, inv_f) } } - }).start() + }.start() } fun queryInventoryAsync(listener: QueryInventoryFinishedListener?) { @@ -814,9 +811,9 @@ class IabHelper(ctx: Context, base64PublicKey: String?) { fun consumeAsyncInternal(purchases: List, singleListener: ((purchase: Purchase?, result: IabResult?)-> Unit)?, multiListener: OnConsumeMultiFinishedListener?) { - val handler = Handler() + val handler = Handler(Looper.getMainLooper()) flagStartAsync("consume") - Thread(Runnable { + Thread { val results: MutableList = ArrayList() for (purchase in purchases) { try { @@ -833,7 +830,7 @@ class IabHelper(ctx: Context, base64PublicKey: String?) { if (!mDisposed && multiListener != null) { handler.post { multiListener.onConsumeMultiFinished(purchases, results) } } - }).start() + }.start() } fun logDebug(msg: String?) { diff --git a/application/television/src/main/java/org/videolan/television/ui/audioplayer/AudioPlayerActivity.kt b/application/television/src/main/java/org/videolan/television/ui/audioplayer/AudioPlayerActivity.kt index 6957a6470..63ae0efeb 100644 --- a/application/television/src/main/java/org/videolan/television/ui/audioplayer/AudioPlayerActivity.kt +++ b/application/television/src/main/java/org/videolan/television/ui/audioplayer/AudioPlayerActivity.kt @@ -26,6 +26,7 @@ import android.net.Uri import android.os.Build import android.os.Bundle import android.os.Handler +import android.os.Looper import android.support.v4.media.session.PlaybackStateCompat import android.text.format.DateFormat import android.view.* @@ -66,7 +67,7 @@ class AudioPlayerActivity : BaseTvActivity(),KeycodeListener { private lateinit var binding: TvAudioPlayerBinding private lateinit var adapter: PlaylistAdapter - private val handler = Handler() + private val handler = Handler(Looper.getMainLooper()) private var lastMove: Long = 0 private var shuffling = false private var currentCoverArt: String? = null diff --git a/application/tools/src/main/java/org/videolan/tools/WeakHandler.kt b/application/tools/src/main/java/org/videolan/tools/WeakHandler.kt index 25658a8b1..f08c8ae9f 100644 --- a/application/tools/src/main/java/org/videolan/tools/WeakHandler.kt +++ b/application/tools/src/main/java/org/videolan/tools/WeakHandler.kt @@ -21,10 +21,11 @@ package org.videolan.tools import android.os.Handler +import android.os.Looper import java.lang.ref.WeakReference -abstract class WeakHandler(owner: T) : Handler() { +abstract class WeakHandler(owner: T) : Handler(Looper.getMainLooper()) { private val mOwner: WeakReference = WeakReference(owner) val owner: T? diff --git a/application/vlc-android/src/org/videolan/vlc/gui/HistoryAdapter.kt b/application/vlc-android/src/org/videolan/vlc/gui/HistoryAdapter.kt index 248f78687..ae718d595 100644 --- a/application/vlc-android/src/org/videolan/vlc/gui/HistoryAdapter.kt +++ b/application/vlc-android/src/org/videolan/vlc/gui/HistoryAdapter.kt @@ -20,6 +20,7 @@ package org.videolan.vlc.gui import android.os.Handler +import android.os.Looper import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -51,7 +52,7 @@ class HistoryAdapter(private val inCards: Boolean = false, private val listEvent val updateEvt : LiveData = MutableLiveData() private lateinit var layoutInflater: LayoutInflater var multiSelectHelper: MultiSelectHelper = MultiSelectHelper(this, UPDATE_SELECTION) - private val handler by lazy(LazyThreadSafetyMode.NONE) { Handler() } + private val handler by lazy(LazyThreadSafetyMode.NONE) { Handler(Looper.getMainLooper()) } inner class ViewHolder(binding: ViewDataBinding) : SelectorViewHolder(binding), MarqueeViewHolder { diff --git a/application/vlc-android/src/org/videolan/vlc/gui/audio/AudioBrowserAdapter.kt b/application/vlc-android/src/org/videolan/vlc/gui/audio/AudioBrowserAdapter.kt index d772aff98..5e12e7007 100644 --- a/application/vlc-android/src/org/videolan/vlc/gui/audio/AudioBrowserAdapter.kt +++ b/application/vlc-android/src/org/videolan/vlc/gui/audio/AudioBrowserAdapter.kt @@ -28,6 +28,7 @@ import android.content.Context import android.graphics.drawable.BitmapDrawable import android.os.Build import android.os.Handler +import android.os.Looper import android.view.LayoutInflater import android.view.MotionEvent import android.view.View @@ -89,7 +90,7 @@ open class AudioBrowserAdapter @JvmOverloads constructor( private var focusNext = -1 private var focusListener: FocusListener? = null lateinit var inflater: LayoutInflater - private val handler by lazy(LazyThreadSafetyMode.NONE) { Handler() } + private val handler by lazy(LazyThreadSafetyMode.NONE) { Handler(Looper.getMainLooper()) } var stopReorder = false protected fun inflaterInitialized() = ::inflater.isInitialized diff --git a/application/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt b/application/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt index ee842dd3f..d87311d5c 100644 --- a/application/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt +++ b/application/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt @@ -25,6 +25,7 @@ import android.content.Intent import android.content.SharedPreferences import android.os.Bundle import android.os.Handler +import android.os.Looper import android.os.Vibrator import android.support.v4.media.session.PlaybackStateCompat import android.text.Editable @@ -97,7 +98,7 @@ class AudioPlayer : Fragment(), PlaylistAdapter.IPlayer, TextWatcher, IAudioPlay private lateinit var binding: AudioPlayerBinding private lateinit var playlistAdapter: PlaylistAdapter private lateinit var settings: SharedPreferences - private val handler by lazy(LazyThreadSafetyMode.NONE) { Handler() } + private val handler by lazy(LazyThreadSafetyMode.NONE) { Handler(Looper.getMainLooper()) } lateinit var playlistModel: PlaylistModel lateinit var bookmarkModel: BookmarkModel private lateinit var optionsDelegate: PlayerOptionsDelegate diff --git a/application/vlc-android/src/org/videolan/vlc/gui/audio/PlaylistAdapter.kt b/application/vlc-android/src/org/videolan/vlc/gui/audio/PlaylistAdapter.kt index 036cca4cd..a81b9fdd1 100644 --- a/application/vlc-android/src/org/videolan/vlc/gui/audio/PlaylistAdapter.kt +++ b/application/vlc-android/src/org/videolan/vlc/gui/audio/PlaylistAdapter.kt @@ -29,6 +29,7 @@ import android.graphics.Typeface import android.graphics.drawable.BitmapDrawable import android.os.Build import android.os.Handler +import android.os.Looper import android.os.Message import android.view.LayoutInflater import android.view.View @@ -71,7 +72,7 @@ class PlaylistAdapter(private val player: IPlayer) : DiffUtilAdapter, var selectedTrack: VlcTrack?, val trackTypePrefix:String) : RecyclerView.Adapter() { lateinit var trackSelectedListener: (VlcTrack) -> Unit - private val handler by lazy(LazyThreadSafetyMode.NONE) { Handler() } + private val handler by lazy(LazyThreadSafetyMode.NONE) { Handler(Looper.getMainLooper()) } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val inflater = LayoutInflater.from(parent.context) diff --git a/application/vlc-android/src/org/videolan/vlc/gui/helpers/BookmarkAdapter.kt b/application/vlc-android/src/org/videolan/vlc/gui/helpers/BookmarkAdapter.kt index 751585784..a22108215 100644 --- a/application/vlc-android/src/org/videolan/vlc/gui/helpers/BookmarkAdapter.kt +++ b/application/vlc-android/src/org/videolan/vlc/gui/helpers/BookmarkAdapter.kt @@ -27,6 +27,7 @@ package org.videolan.vlc.gui.helpers import android.annotation.TargetApi import android.os.Build import android.os.Handler +import android.os.Looper import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -42,7 +43,7 @@ import org.videolan.vlc.gui.DiffUtilAdapter class BookmarkAdapter(val bookmarkManager: IBookmarkManager) : DiffUtilAdapter() { - private val handler by lazy(LazyThreadSafetyMode.NONE) { Handler() } + private val handler by lazy(LazyThreadSafetyMode.NONE) { Handler(Looper.getMainLooper()) } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val v = LayoutInflater.from(parent.context) diff --git a/application/vlc-android/src/org/videolan/vlc/gui/network/MRLAdapter.kt b/application/vlc-android/src/org/videolan/vlc/gui/network/MRLAdapter.kt index e6dc1b3e9..17e535b8d 100644 --- a/application/vlc-android/src/org/videolan/vlc/gui/network/MRLAdapter.kt +++ b/application/vlc-android/src/org/videolan/vlc/gui/network/MRLAdapter.kt @@ -22,6 +22,7 @@ package org.videolan.vlc.gui.network import android.net.Uri import android.os.Handler +import android.os.Looper import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -44,7 +45,7 @@ private const val TYPE_DUMMY = 2 internal class MRLAdapter(private val eventActor: SendChannel, private val inCards: Boolean = false) : DiffUtilAdapter() { private var dummyClickListener: (() -> Unit)? = null - private val handler by lazy(LazyThreadSafetyMode.NONE) { Handler() } + private val handler by lazy(LazyThreadSafetyMode.NONE) { Handler(Looper.getMainLooper()) } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { val inflater = LayoutInflater.from(parent.context) diff --git a/application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerResizeDelegate.kt b/application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerResizeDelegate.kt index af8cb6d8e..6ba576f5b 100644 --- a/application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerResizeDelegate.kt +++ b/application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerResizeDelegate.kt @@ -25,6 +25,7 @@ package org.videolan.vlc.gui.video import android.os.Handler +import android.os.Looper import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -200,7 +201,7 @@ class SizeAdapter : RecyclerView.Adapter() { notifyItemChanged(field) } lateinit var sizeSelectedListener: (MediaPlayer.ScaleType) -> Unit - private val handler by lazy(LazyThreadSafetyMode.NONE) { Handler() } + private val handler by lazy(LazyThreadSafetyMode.NONE) { Handler(Looper.getMainLooper()) } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val inflater = LayoutInflater.from(parent.context) diff --git a/application/vlc-android/src/org/videolan/vlc/gui/video/VideoStatsDelegate.kt b/application/vlc-android/src/org/videolan/vlc/gui/video/VideoStatsDelegate.kt index e744a7cb6..3cbdd43fc 100644 --- a/application/vlc-android/src/org/videolan/vlc/gui/video/VideoStatsDelegate.kt +++ b/application/vlc-android/src/org/videolan/vlc/gui/video/VideoStatsDelegate.kt @@ -27,6 +27,7 @@ package org.videolan.vlc.gui.video import android.annotation.SuppressLint import android.net.Uri import android.os.Handler +import android.os.Looper import android.util.Log import android.view.MotionEvent import android.view.View @@ -53,7 +54,7 @@ class VideoStatsDelegate(private val player: VideoPlayerActivity, val scrolling: lateinit var container: ConstraintLayout private var lastMediaUri: Uri? = null private var started = false - private val plotHandler: Handler = Handler() + private val plotHandler: Handler = Handler(Looper.getMainLooper()) private val firstTimecode = System.currentTimeMillis() lateinit var binding: PlayerHudBinding private lateinit var constraintSet: ConstraintSet diff --git a/application/vlc-android/src/org/videolan/vlc/gui/video/VideoTouchDelegate.kt b/application/vlc-android/src/org/videolan/vlc/gui/video/VideoTouchDelegate.kt index e95316d35..67bd3abdc 100644 --- a/application/vlc-android/src/org/videolan/vlc/gui/video/VideoTouchDelegate.kt +++ b/application/vlc-android/src/org/videolan/vlc/gui/video/VideoTouchDelegate.kt @@ -6,6 +6,7 @@ import android.animation.ObjectAnimator import android.content.res.Configuration import android.media.AudioManager import android.os.Handler +import android.os.Looper import android.provider.Settings import android.util.DisplayMetrics import android.util.Log @@ -61,7 +62,7 @@ class VideoTouchDelegate(private val player: VideoPlayerActivity, private val resizeDelegate: VideoPlayerResizeDelegate get() = player.resizeDelegate - var handler = Handler() + var handler = Handler(Looper.getMainLooper()) var numberOfTaps = 0 var lastTapTimeMs: Long = 0 diff --git a/application/vlc-android/src/org/videolan/vlc/gui/video/benchmark/BenchActivity.kt b/application/vlc-android/src/org/videolan/vlc/gui/video/benchmark/BenchActivity.kt index 2a2537c08..eece478c4 100644 --- a/application/vlc-android/src/org/videolan/vlc/gui/video/benchmark/BenchActivity.kt +++ b/application/vlc-android/src/org/videolan/vlc/gui/video/benchmark/BenchActivity.kt @@ -29,6 +29,7 @@ import android.content.IntentFilter import android.content.pm.ActivityInfo import android.os.Bundle import android.os.Handler +import android.os.Looper import android.support.v4.media.session.PlaybackStateCompat import android.util.Log import android.view.View @@ -67,7 +68,7 @@ import java.io.* class BenchActivity : ShallowVideoPlayer() { private lateinit var timeOut: Runnable - private val timeoutHandler: Handler = Handler() + private val timeoutHandler: Handler = Handler(Looper.getMainLooper()) private var screenshotsTimestamp: List? = null private var isScreenshot = false private var screenshotCount = 0