[Android] Fix deadlock at app startup
Geoffrey Métais
git at videolan.org
Fri Nov 3 15:42:26 CET 2017
vlc-android | branch: 2.5.x | Geoffrey Métais <geoffrey.metais at gmail.com> | Fri Nov 3 11:48:12 2017 +0100| [2162737bfee5daf34737403b8e41eaabeed6cb56] | committer: Geoffrey Métais
Fix deadlock at app startup
(cherry picked from commit 584d29b1335975df05964ccb32677bda7a8df6fc)
> https://code.videolan.org/videolan/vlc-android/commit/2162737bfee5daf34737403b8e41eaabeed6cb56
---
medialibrary/src/org/videolan/medialibrary/Medialibrary.java | 10 ++--------
vlc-android/src/org/videolan/vlc/VLCApplication.java | 7 ++++++-
2 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/medialibrary/src/org/videolan/medialibrary/Medialibrary.java b/medialibrary/src/org/videolan/medialibrary/Medialibrary.java
index a3c687e34..f48915d5e 100644
--- a/medialibrary/src/org/videolan/medialibrary/Medialibrary.java
+++ b/medialibrary/src/org/videolan/medialibrary/Medialibrary.java
@@ -67,13 +67,7 @@ public class Medialibrary {
private final List<EntryPointsEventsCb> entryPointsEventsCbList = new ArrayList<>();
private static Context sContext;
- static {
- LibVLC.loadLibraries();
- }
-
- private static class MedialibraryHolder {
- public static final Medialibrary instance = new Medialibrary();
- }
+ private static final Medialibrary instance = new Medialibrary();
public static Context getContext() {
return sContext;
@@ -143,7 +137,7 @@ public class Medialibrary {
}
public static Medialibrary getInstance() {
- return MedialibraryHolder.instance;
+ return instance;
}
@WorkerThread
diff --git a/vlc-android/src/org/videolan/vlc/VLCApplication.java b/vlc-android/src/org/videolan/vlc/VLCApplication.java
index f54c87ce5..60625984e 100644
--- a/vlc-android/src/org/videolan/vlc/VLCApplication.java
+++ b/vlc-android/src/org/videolan/vlc/VLCApplication.java
@@ -36,6 +36,7 @@ import android.support.v4.util.SimpleArrayMap;
import android.util.Log;
import org.videolan.libvlc.Dialog;
+import org.videolan.libvlc.LibVLC;
import org.videolan.libvlc.util.AndroidUtil;
import org.videolan.medialibrary.Medialibrary;
import org.videolan.vlc.gui.DialogActivity;
@@ -74,7 +75,7 @@ public class VLCApplication extends Application {
public static final ThreadFactory THREAD_FACTORY = new ThreadFactory() {
@Override
public Thread newThread(Runnable runnable) {
- Thread thread = new Thread(runnable);
+ final Thread thread = new Thread(runnable);
thread.setPriority(Process.THREAD_PRIORITY_DEFAULT+Process.THREAD_PRIORITY_LESS_FAVORABLE);
return thread;
}
@@ -93,9 +94,12 @@ public class VLCApplication extends Application {
setLocale();
+ LibVLC.loadLibraries();
+
runBackground(new Runnable() {
@Override
public void run() {
+
if (AndroidUtil.isOOrLater)
NotificationHelper.createNotificationChannels();
// Prepare cache folder constants
@@ -112,6 +116,7 @@ public class VLCApplication extends Application {
AndroidDevices.setRemoteControlReceiverEnabled(false);
}
});
+
if (sActivityCbListener != null)
registerActivityLifecycleCallbacks(sActivityCbListener);
else
More information about the Android
mailing list