2016-12-07 9 views
-2

При нормальных обстоятельствах, если приложение убито, я ничего не могу сделать. Но у меня есть требование, что когда мое приложение будет убито, мне нужно сообщить серверу приложение мертво. Но когда я инициатива убить мое приложение или мое приложение перерабатывается системой, я ничего не могу сделать, и я не знаю, как сказать, что приложение сервера убито. Что я знаю, это позвонить jni, но я не знаете, как написать jni-код. Кто-нибудь знает это?Как я могу отправить сообщение, когда мое приложение убито (android)

+1

Не уверен, что это будет соответствовать вашим требованиям, но вы можете реализовать соединение Socket с вашим сервером (например, с socket.io). Когда приложение будет убито, соединение сокета будет автоматически закрыто, и ваш сервер узнает, что приложение мертво. – peshkira

+0

Правильно, система по умолчанию будет просто убивать процесс и не уведомлять приложение о его закрытии (следовательно, не позволяет выполнять код пользователя). Что вы можете сделать, так это использовать Сервис для мониторинга состояния приложения. – evident

+0

@evident, если приложение будет убито, будет ли работать приложение? –

ответ

0

Попробуйте использовать демон. В этом случае вы можете превратить свой 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); 
    } 
} 
+0

. Как это относится к вопросу? Что происходит, когда ваш демон убит? –

+0

Вопрос: «При нормальных обстоятельствах, если приложение убито, я не могу ничего сделать (...), когда мое приложение убито, мне нужно сообщить, что приложение сервера мертво». Решение, приведенное выше, является ответом на этот вопрос. Запустив демон, вы сможете контролировать приложение и сообщать серверу, когда он убит. – mko

Смежные вопросы