Unkendled softexception java.lang.runtimeexception: React Native Extance уже исчез: запрашивается сроком на APK React NaJavascript

Форум по Javascript
Ответить
Anonymous
 Unkendled softexception java.lang.runtimeexception: React Native Extance уже исчез: запрашивается сроком на APK React Na

Сообщение Anonymous »

У меня ошибка в моей сборке APK моего приложения React Native Expo, ошибка просто происходит на APK, я не могу ответить на сборку разработки. Ошибка происходит только через 15 минут после того, как я вызову действие, функцию, называемую CreateeVento на общем компонете для всех событий, и закрыть приложение, а затем попытаться снова запустить действие через 15 минут, а затем приложение получит эту странную ошибку, Стилки загружаются в цикле.

Код: Выделить всё

 E  Unhandled SoftException
java.lang.RuntimeException: React Native Instance has already disappeared: requested by Timing
at com.facebook.react.bridge.BaseJavaModule.getReactApplicationContextIfActiveOrWarn(BaseJavaModule.java:125)
at com.facebook.react.modules.core.TimingModule.access$000(TimingModule.java:22)
at com.facebook.react.modules.core.TimingModule$BridgeTimerExecutor.callTimers(TimingModule.java:28)
at com.facebook.react.modules.core.JavaTimerManager.createAndMaybeCallTimer(JavaTimerManager.java:345)
at com.facebook.react.modules.core.TimingModule.createTimer(TimingModule.java:84)
at java.lang.reflect.Method.invoke(Native Method)
at com.facebook.react.bridge.JavaMethodWrapper.invoke(JavaMethodWrapper.java:372)
at com.facebook.react.bridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:146)
at com.facebook.jni.NativeRunnable.run(Native Method)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:27)
at android.os.Looper.loop(Looper.java:246)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:233)
< /code>
Вторая ошибка < /p>
e Unketred softexception
com.facebook.react.bridge.reactnocrashsofteXcept Uimanager - uimanager исчез для тега: 797
at com.facebook.react.animated.nativeanimatednodesmanager.connectanimatednodetoview (nativeanimatednodesmanager.java:438)
at com.facebook.react.animated.nativeanimatedmodule $ 18.execute (nativeanmatedmodule.java at at at $ 18.execute (nativeanmatedmodule. com.facebook.react.animated.nativeanimatedmodule $ comprourentoperationqueue.executebatch (nativeanimatedmodule.java:171)
at com.facebook.react.animated.nativeanimatedmodule $ 3.execute (nativeanmatedmodule.java:365). com.facebook.react.uimanager.uiviewoperationqueue $ uiblockoperation.execute (uiviewoperation.java:557)
at com.facebook.react.uimanager.uiviewoperationqueue $ 1.run (uiviewoperation.java:910). com.facebook.react.uimanager.uiviewoperationqueue.flushpendingbatches (uiviewoperation quieue.java:1023)
at com.facebook.react.uimanager.uiviewoperationqueue .- $$ nest $ mflushpendingbatch (неизвестный источник: 0) at at at at at at $ mflushpendingbatches.  com.facebook.react.uimanager.uiviewoperationqueue $ 2.runguarded (uiviewoperationqueue.java:979)
at com.facebook.react.bridge.guardedrunnable.run (GuardEdrunnable.java:29)
Android.os.handler.handlecallback (handler.java:938)
at android.os.handler.dispatchmessage (Handler.java:99)
at android.os.looper.loop (looper.java: 246)
at android.app.activityThread.main (ActivityThread.java:8653)
at java.lang.reflect.method.invoke (нативный метод)
at com.android.internal.os.runtimeinit $ methodandargscaller.run (runtimeinit.java:602)
at com.android.  Internal.os.zygoteinit.main (zygoteinit.java:1130) < /p>
import React, { useEffect, useState } from 'react';
import { View, Text, TouchableOpacity, TextInput, Alert, AppState, AppStateStatus, AlertButton } from 'react-native';
import * as SecureStore from 'expo-secure-store';
import BackgroundCustomColor from '@/components/Jornada/BackgroundCustomColor';
import { MaterialCommunityIcons, Octicons } from '@expo/vector-icons';
import { ScrollView } from 'react-native-gesture-handler';
import { ConfirmationJourney } from '@/components/Jornada/ConfirmationJourneyBackground';
import { Timer } from '@/components/Jornada/Timer';
import EventoService from '@/services/api/eventosService';
import QRCodeReader from '@/components/QRCodeReader';
import { verificarLiberacaoQRCode } from '@/utils/verifyParametros';
import UsuarioService from '@/services/api/usuarioService';
import Loading from '@/components/Loading';
import AlertService from '@/services/api/alertService';
import { useNavigation } from '@react-navigation/native';
import { NavigationProp } from '@/types/navigation';
import { useEventosDatabase } from '@/database/useEventosDatabase';
import deactivateBackButton from '@/utils/deactivateBackButton';
import DropDownPicker from 'react-native-dropdown-picker';
import { LISTA_VEICULOS_KEY } from '@/constants/consts';
import { IVeiculo } from '@/types/Veiculo';
import { useAuth } from '@/services/auth/AuthContext';

interface EventProps {
title: string;
color: string;
startEvent: string;
endEvent: string;
icon: React.ReactNode;
confirmationIcon: React.ReactNode;
isRefeicao?: boolean;
isDirecao?: boolean;
isAbastecimento?: boolean;
}

export default function Event({ title, color, startEvent, endEvent, icon, confirmationIcon, isRefeicao, isDirecao, isAbastecimento }: EventProps) {
const navigation = useNavigation();
const { authState } = useAuth();
const { createEvento, checkIsUltimoEvento, sendDirecaoData, sendAbastecimentoData } = EventoService();
const { checkTempoMinRefeicao, checkTempoMaxRefeicao, checkDirecaoTempoMax, checkEncerramentoTurno, checkLimiteEncerramentoTurno } = AlertService();
const [time, setTime] = useState(0);
const [startTimer, setStartTimer] = useState(false);
const [confirmationBox, setConfirmationBox] = useState(false);

const { confirmarLeituraQRCode } = UsuarioService();
const [QRCodeScanned, setQRCodeScanned] = useState();
const [openScanner, setOpenScanner] = useState(false);
const [loading, setLoading] = useState(false);

const [instanteEvento, setInstanteEvento] = useState(null);

// State para Direcao
const [dataEvento, setDataEvento] = useState();
const [dataFimEvento, setDataFimEvento] = useState();
const [hodometroValue, setHodometroValue] = useState();
const [hodometroInicial, setHodometroInicial] = useState();
const [hodometroFinal, setHodometroFinal] = useState();
const [openFirstDropdown, setOpenFirstDropdown] = useState(false);
const [itemsFirstDropdown, setItemsFirstDropdown] = useState([
{ label: 'Carregando', value: 1 },
{ label: 'Vazio', value: 2 }
]);
const [valueFirstDropdown, setValueFirstDropdown] = useState(itemsFirstDropdown[0].value);

const [openSecondDropdown, setOpenSecondDropdown] = useState(false);
const [itemsSecondDropdown, setItemsSecondDropdown] = useState([]);
const [valueSecondDropdown, setValueSecondDropdown] = useState();

// States para Abastecimento
const [litrosValue, setLitrosValue] = useState(null);
const [valorPorLitroValue, setValorPorLitroValue] = useState(null);
const [valorTotalValue, setValorTotalValue] = useState(null);
const [openDropdown, setOpenDropdown] = useState(false);
const [itemsDropdown, setItemsDropdown] = useState([
{ label: 'Alcool', value: 'AL' },
{ label: 'Gasolina', value: 'GA' },
{ label: 'Diesel', value: 'DI' }
]);
const [valueDropdown, setValueDropdown] = useState(itemsDropdown[0].value);

useEffect(() => {
deactivateBackButton(startTimer);

checkIsUltimoEvento(startEvent).then((isLastEvento) =>  {
if (isLastEvento?.isUltimoEvento) {
setStartTimer(true);
setInstanteEvento(isLastEvento.instanteEvento);
}
});

SecureStore.getItemAsync(LISTA_VEICULOS_KEY).then((result) => {
const veiculosData = JSON.parse(result!);

setHodometroValue(veiculosData[0].ultimoHodometro.toString() + ".00");

if (veiculosData) {
setItemsSecondDropdown(veiculosData?.map((item: IVeiculo) => {
return { label: item.placa, value: item.placa, hodometro: item.ultimoHodometro?.toString() };
}));

setValueSecondDropdown(veiculosData[0]?.placa);
}
}).catch((error) => console.log("Erro ao buscar lista de veiculos", error));
}, [startTimer]);

const handleAppStateChange = (nextAppState: AppStateStatus) => {
if (nextAppState === 'active') {
console.log('App has come to the foreground!');
// Reinitialize or refresh any necessary data here
}
};

useEffect(() => {
const subscription = AppState.addEventListener('change', handleAppStateChange);
return () => {
subscription.remove();
};
}, []);

const handleConfirmJourney = async () => {
try {
if (!startTimer) {
setLoading(true);

setStartTimer(true);
const res = await createEvento(startEvent);
setDataEvento(res);

setInstanteEvento(res);

if (isDirecao) {
setHodometroInicial(hodometroValue);
await checkDirecaoTempoMax();
}

await checkTempoMaxRefeicao();
setLoading(false);
} else if (startTimer) {
setLoading(true);

const res = await createEvento(endEvent);

setStartTimer(false);
if (isDirecao) {
setDataFimEvento(res);
setHodometroFinal(hodometroValue);
}

// Enviar dados de direcao
if (isDirecao && valueFirstDropdown && dataEvento && (res || dataFimEvento) && hodometroValue && valueSecondDropdown) {
const data = {
tipo: valueFirstDropdown,
dataEvento: dataEvento,
dataFimEvento: dataFimEvento ?? res,
hodometroInicial: Number(hodometroInicial),
hodometroFinal: Number(hodometroFinal) ?? Number(hodometroValue),
placa: valueSecondDropdown,
idVeiculo: authState?.user?.listaDeVeiculos.find((item) => item.placa === valueSecondDropdown)?.id!
};
await sendDirecaoData(data);
}

// Enviar dados de abastecimento
if (isAbastecimento && litrosValue && valorPorLitroValue && valorTotalValue && valueDropdown) {
const data = {
quantidadeAbastecida: litrosValue,
valorDia: valorPorLitroValue,
totalAbastecido: valorTotalValue,
tipoCombustivel: valueDropdown
};
await sendAbastecimentoData(data);
}

checkEncerramentoTurno();
checkLimiteEncerramentoTurno();
setInstanteEvento(null);

setLoading(false);
deactivateBackButton();
navigation.navigate("Jornada");
}
} catch (error) {
console.log("Erro ao confirmar jornada", error);
setLoading(false);
}
setConfirmationBox(false);
};

const handleQRCodeConfirmation = async () => {
if (await verificarLiberacaoQRCode(title)) {
if (QRCodeScanned) {
confirmarLeituraQRCode(QRCodeScanned).then((result) =>  {
if (result?.data.codigoRetorno === 1) {
setQRCodeScanned(null);

setLoading(false);
handleConfirmJourney();
} else if (result?.data.codigoRetorno === -1) {
Alert.alert(result.data.mensagem + " tente novamente!", undefined, [
{
text: 'OK', onPress: () => {
setOpenScanner(true);
}
} as AlertButton,
]);
setLoading(false);
setQRCodeScanned(null);
return;
}
}).catch((error) => {
console.log("ERROR", error);
alert("Ocorreu um erro.  Tente novamente!");
setQRCodeScanned(null);
setOpenScanner(true);
return;
});
} else {
setOpenScanner(true);
}
} else {
handleConfirmJourney();
}
};

if (openScanner) return (

);

return (

{!confirmationBox ? (




{title}

{isDirecao && (

 ()}
ArrowDownIconComponent={() => ()}
placeholder="Seleciono o tipo"
ListEmptyComponent={() => Nenhum item}
open={openFirstDropdown}
value={valueFirstDropdown}
items={itemsFirstDropdown}
setOpen={() => {
setOpenFirstDropdown(!openFirstDropdown);
setOpenSecondDropdown(false);
}}
setValue={setValueFirstDropdown}
setItems={setItemsFirstDropdown}
/>
{itemsSecondDropdown.length > 0 && (
 Nenhum item}
ArrowUpIconComponent={() => ()}
ArrowDownIconComponent={() => ()}
placeholder="PLACA"
placeholderStyle={{ color: "white"  }}
open={openSecondDropdown}
value={valueSecondDropdown ?? null}
items={itemsSecondDropdown}
setOpen={() => {
setOpenSecondDropdown(!openSecondDropdown);
setOpenFirstDropdown(false);
}}
// @ts-ignore
onSelectItem={(item) => setHodometroValue(item.hodometro + ".00")}
setValue={setValueSecondDropdown}
setItems={setItemsSecondDropdown}
/>
)}
 setHodometroValue(value)}
className='min-w-[90%] p-1 border-b-[1px] border-b-[#745419] text-2xl text-white uppercase'
placeholderTextColor={"white"}
keyboardType='number-pad'
placeholder='Hodômetro' />

)}

{isAbastecimento && (

 ()}
ArrowDownIconComponent={() => ()}
placeholder=""
open={openDropdown}
value={valueDropdown}
items={itemsDropdown}
setOpen={() => {
setOpenDropdown(!openDropdown);
}}
setValue={setValueDropdown}
setItems={setItemsDropdown}
/>

 setLitrosValue(Number(value))}
className='min-w-[90%] p-1 border-b-[1px] border-b-[#431242] focus:border-b-[#008577] text-2xl text-white uppercase'
placeholderTextColor={"white"}
keyboardType='numeric'
placeholder='Litros Combustível' />

  setValorPorLitroValue(Number(value))}
className='min-w-[90%] p-1 border-b-[1px] border-b-[#431242] focus:border-b-[#008577] text-2xl text-white uppercase'
placeholderTextColor={"white"}
keyboardType='numeric'
placeholder='Valor por Litro' />

 setValorTotalValue(Number(value))}
className='min-w-[90%] p-1 border-b-[1px] border-b-[#431242] focus:border-b-[#008577] text-2xl text-white uppercase'
placeholderTextColor={"white"}
keyboardType='numeric'
placeholder='Valor Total' />

)}



{icon}



{startTimer ? (
 {
setConfirmationBox(true);
isRefeicao && checkTempoMinRefeicao();
}}>

ENCERRAR
 {title}


) : (
 setConfirmationBox(true)}>

INICIAR
 {title}


)}



) : (
 handleQRCodeConfirmation()} onCancel={() => setConfirmationBox(false)}>
Deseja {time > 0 ? "ENCERRAR" : "INICIAR"} {title}?
{confirmationIcon}

)}
{loading && }

);
}
Я сжигаю голову, чтобы решить эту очень странную ошибку, Холпе кто -то может помочь мне

Подробнее здесь: https://stackoverflow.com/questions/794 ... nce-has-al
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»