Dans mon application, j'utilise la définition de la position de la personne dans l'image. Après cela, en utilisant RxJava, je traite l'image résultante et affiche le résultat. Après avoir ré-exécuté ce processus. Tout fonctionne parfaitement sur des appareils tels que Samsung, Huawei, Meizu et autres (avec Android version 5.0 et plus). Mais sur Xiaomi (peu importe quelle version d'Android) J'obtiens cette erreur:Fatal signal 11 (SIGSEGV) lors de l'utilisation RxJava et play services vision
A/libc: invalid address or address of corrupt block 0xabc932a8 passed to dlfree A/libc: Fatal signal 11 (SIGSEGV), code 2, fault addr 0xdeadbaad in tid 28493 (RxNewThreadSche) A/DEBUG: pid: 28376, tid: 28493, name: RxNewThreadSche >>> com.package.name <<<
Parfois, il se bloque après démarrage procces, parfois travailler 5-6 fois. Mais ça force toujours à finir ma demande. Je ne peux pas mettre ici tout mon code, mais je pense que cela est dû à:
FaceDetector.release();
parce que quand je ne l'utilise pas cette ligne mon application écrasé sinon, tout simplement pas travailler FaceDetector (sur d'autres appareils i utilisé il). Après une panne, xiaomi a généré une erreur this.
EDIT
private static FaceDetector sFaceDetector;
private static FaceDetectorUtil sFaceDetectorUtil;
private static WeakReference<Context> mContext;
public static void init(Context context) {
if (sFaceDetectorUtil == null) {
sFaceDetectorUtil = new FaceDetectorUtil(context);
}
}
private FaceDetectorUtil(Context context) {
mContext = new WeakReference<>(context);
}
public static FaceDetector getDetector() {
if (sFaceDetector != null) {
sFaceDetector.release();
}
return sFaceDetector = new FaceDetector.Builder(mContext.get())
.setTrackingEnabled(false)
.setLandmarkType(FaceDetector.ALL_LANDMARKS)
.setMode(FaceDetector.FAST_MODE)
.build();
}
EDIT 2
fils courantes méthode getFaceDetector:
Huawei P9 Lite:
Count: 13
Sujets: HeapTaskDaemon
Sujets: FinalizerDaemon
Sujets: RxComputationThreadPool-2
Sujets: pool-1-fil-1
Sujets: GoogleApiHandler
Sujets: RxComputationThreadPool-1
Sujets: JavaCPP Deallocator
Sujets: ReferenceQueueDaemon
Sujets: FinalizerWatchdogDaemon
Sujets: RxCachedWorkerPoolEvictor-1
Sujets: RxComputationThreadPool-3
Sujets: RxNewThreadScheduler-17
discussion s: pool-2-fil-1
Xiaomi redmi 4x:
Count: 22
Sujets: Attrape signal
Sujets: RxComputationThreadPool-2
Sujets: Liant: 5858_3
Sujets: Liant : 5858_2
Sujets: hwuiTask1
Sujets: RxComputationThreadPool-1
Sujets: JDWP
Sujets: FinalizerWatchdogDaemon
Sujets: RenderThread
Sujets: RxCachedWorkerPoolEvictor-1
Sujets: RxComputationThreadPool-3
Sujets: ReferenceQueueDaemon
Sujets: Liant: 5858_1
Sujets: pool-1-fil-1
Sujets: JavaCPP Deallocator
Fils : HeapTaskDaemon
Sujets: principales
Sujets: GoogleApiHandler
Sujets: FinalizerDaemon
Sujets: RxNewThreadScheduler-4
Discussions: hwuiTask2
Discussions: pool-2-thread-1
J'apprécierais vraiment que quelqu'un puisse m'aider. Cordialement!
Quand appelez-vous 'FaceDetector.release()'? Y a-t-il d'autres threads qui l'utilisent encore? – cwbowron
@cwbowron Nope, juste un qui pocces image – Anonymous