При нормальных обстоятельствах, если приложение убито, я ничего не могу сделать. Но у меня есть требование, что когда мое приложение будет убито, мне нужно сообщить серверу приложение мертво. Но когда я инициатива убить мое приложение или мое приложение перерабатывается системой, я ничего не могу сделать, и я не знаю, как сказать, что приложение сервера убито. Что я знаю, это позвонить jni, но я не знаете, как написать jni-код. Кто-нибудь знает это?Как я могу отправить сообщение, когда мое приложение убито (android)
ответ
Попробуйте использовать демон. В этом случае вы можете превратить свой Java-процесс в демона и завершить основной.
Посмотрите здесь:
https://github.com/mkowsiak/jnicookbook/tree/master/recipeNo022
В общем, вы хотите, чтобы демонизировать свой собственный код.
...
...
int demonize() {
int pid = fork();
switch (pid) {
case -1:
return (-1);
case 0:
break;
default:
return pid;
}
return 0;
}
...
...
int pid = demonize();
if(pid == 0) {
while(1) {
sleep(1);
fprintf(fid, "daemon\n");
fflush(fid);
}
}
. Как это относится к вопросу? Что происходит, когда ваш демон убит? –
Вопрос: «При нормальных обстоятельствах, если приложение убито, я не могу ничего сделать (...), когда мое приложение убито, мне нужно сообщить, что приложение сервера мертво». Решение, приведенное выше, является ответом на этот вопрос. Запустив демон, вы сможете контролировать приложение и сообщать серверу, когда он убит. – mko
Не уверен, что это будет соответствовать вашим требованиям, но вы можете реализовать соединение Socket с вашим сервером (например, с socket.io). Когда приложение будет убито, соединение сокета будет автоматически закрыто, и ваш сервер узнает, что приложение мертво. – peshkira
Правильно, система по умолчанию будет просто убивать процесс и не уведомлять приложение о его закрытии (следовательно, не позволяет выполнять код пользователя). Что вы можете сделать, так это использовать Сервис для мониторинга состояния приложения. – evident
@evident, если приложение будет убито, будет ли работать приложение? –