2013-04-05 13 views
5

簡単な言葉で私のアプリケーション全体を停止するにはどうすればよいですか? (すべてのアクティビティ、サービス、スレッドなど)ライフサイクルコールバック(特にonStop()およびonDestroy())を呼び出す必要があります。ライフサイクルコールバックを呼び出してアプリケーションを停止する

Googleは、以下の可能な解決策を提案している:

  • は、プロセスを殺す:)が、これはライフサイクルコールバック
  • と仕上げを(呼び出すことはありません。しかし、これは唯一の活動のためにある:

しかし、それは次のように外部からこのメソッドにアクセスすることが可能である:

//Getting all activityies, how? 
//For each gotten activity 
AcitvityName.finish(); 
or via or via getParent().finish(); ? 

これは、私を助けていない:Best way to quit android app?

FD

+0

あなたは何をしようとしていますか?戻るボタンは標準でアプリを閉じる – JRowan

+0

@ JRowan nope。アンドロイドに「アプリケーションを閉じる」というコンセプトはありません –

+0

@WebnetMobileこれは単純に不可能であることを意味しますか?私はいくつかの方法があると思った... – felixd

答えて

2
@Override 
public void onPause() {   

     if(isFinishing()){ 
//code to finish() all activitys threads etc..... 
}    

    super.onPause(); 
} 

onPause()でisFinishing()をチェックし、終了していればonDestroy()に行きますので、いくつかのコードを実行できますyoud like

+0

しかし、最初にonStop()istが正しく呼び出されましたか?それでなぜ私はこれを必要としますか? – felixd

+1

最初にonPauseが呼び出されず、アプリケーションがシャットダウンすると判断された場合は、(isFinishing()) – JRowan

1

Androidの直接ユーザーに近いアプリケーションを許可しません。あなたはバックグラウンドや直接殺害のプロセスにそれを最小限に抑えることができます。

しかし、あなたは、ユーザーが画面からアプリケーションを削除すると、いくつかのコールバックを呼び出し、すべてのリソースを解放したい場合 - あなたは次の操作を行うことがあります。onDestroy方法で

クリアアクティビティスタック(またはあなたがonBackPressedにしたい場合、onHomePressed) 。すべての削除アクティビティでonDestroyメソッドを呼び出して、リンクを持つアクティビティのonDestroyメソッドで拡張リソースを解放する必要があります。

ユーザーがアプリケーションを終了すると、彼の活動が削除され、すべてのリソースが解放されます。