質問: デバイスが正常に起動したことを通知するイベント 私は電話が再開したときに自動起動するアプリケーションを作っています。電話機の再起動が完了したら、いくつかのイベントを実行したい。 UiAppは、デバイスがリセットを完了する前でも実行されています。これは、アプリを自動起動アプリとして設定したためです。 どんなイベントも聞き取り、電話機がリブートを完了したときに開始されます。 ありがとう
回答: システムを起動しているかどうかを知るには、次のコマンドを使用します。 ``` ApplicationManager.isStartup() ``` falseを返すまでタイマーを使ってこれをポーリングする必要があります。ただし、これは、OSが起動し、システムがアプリケーションを実行できることを意味することに注意する必要があります。アプリケーションを実行するための環境全体が完全にセットアップされているわけではありません。たとえば(マイケルが指摘するように)microSDカードがマウントされていないか、ネットワーク接続が確立されていないか、アプリケーションが依存している可能性のある他のサービスがまだ利用できない場合があります。アプリケーションの作業を始める前に、それらが利用可能であることを確認するのはあなた次第です。 あなたが取る必要があるアプローチは次のとおりです。 1. isStartupがfalseを返すかどうかをポーリングします(システムは起動フェーズにありません)。 2. MicroSDカードがマウントされているかどうかを確認するFileSystemListenerを実装します。 microSDカードのマウント名は "SDCard"であることに注意してください。 ``` class FileSystemListenerImpl implements FileSystemListener { final static String SDCARD_NAME ="SDCard/"; public FileSystemListenerImpl( ) { } public void rootChanged( int state, String rootName ) { if( state == FileSystemListener.ROOT_ADDED) { if( SDCARD_NAME.equals(rootName)) { _isMicroSDReady=true; scheduleApplicationStart(); removeFileSystemListener(this); } } else if( state == FileSystemListener.ROOT_REMOVED) { } } } ```