2016-12-07 6 views
-2

정상적인 상황에서 앱이 죽으면 아무 것도 할 수 없습니다.하지만 내 앱이 죽으면 서버에 알려야합니다. 앱이 죽었습니다.하지만 앱을 죽이려는 계획이나 앱이 시스템에 의해 재활용 될 때 나는 아무것도 할 수 없으며 서버 앱을 죽이는 방법을 알지 못합니다. 내가 아는 것은 jni에게 전화하는 것이지만 그렇지 않습니다. jni 코드를 작성하는 방법을 알고 있습니다. 누구든지 그것을 알고 있습니까?내 앱이 죽을 때 어떻게 메시지를 보낼 수 있습니까 (안드로이드)

+1

귀하의 요구 사항을 충족 시키지만 서버 (예 : socket.io)에 소켓 연결을 구현할 수 있는지 확실하지 않습니다. 응용 프로그램이 종료되면 소켓 연결이 자동으로 닫히고 서버에서 응용 프로그램이 종료되었음을 알게됩니다. – peshkira

+0

맞아요, 기본 응용 프로그램 시스템은 프로세스를 죽이고 응용 프로그램이 닫히고 있음을 알리지 않고 (따라서 사용자 코드를 실행할 수 없게됩니다). 할 수있는 일은 서비스를 사용하여 앱의 상태를 모니터링하는 것입니다. – evident

+0

@evident 앱이 죽으면 앱 작동 서비스가 작동합니까 ??? –

답변

0

데몬을 사용해보십시오. 이 경우 자바 프로세스를 데몬으로 전환하고 주 프로세스를 완료 할 수 있습니다.

여기를보세요 : 일반적으로

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