はい、あなたは正しいです。BREW2.0+ はバックグラウンド アプリケーションをサポートします。
バックグラウンド アプリケーションを初期化すると、他の通常の新しいアプリケーションと同様に、brew アプリケーション インターフェイスから直接起動できます。ISHELL_StartApplet 関数で起動することもできます。
1 つの Brew アプリケーションをバックグラウンドに置きたい場合は、EVT_APP_STOP イベントを処理するときにそれを行う必要があり、dwParam を false に設定する必要があります。これにより EVT_APP_STOP を処理した後、アプリケーションはバックグラウンドに置かれます。また、通常のアプリケーションに変更したい場合は、 ishell_StartApplet 関数を呼び出して、自分自身を再度アクティブにする必要があります。
コード例:
typedef struct _bgApp
{
AEEApplet a;
boolean m_bGoBg;
} bgApp;
switch (eCode)
{
case EVT_APP_START:
if(pMe->m_bGoBg)
ISHELL_CloseApplet(pMe->a.m_pIShell, FALSE);
case EVT_APP_STOP:
if(pMe->m_bGoBg)
*((boolean*) dwParam) = FALSE;
return TRUE;
case EVT_USER:
if(pMe->m_bGoBg)
{
pMe->m_bGoBg = FALSE;
// make applet active
ISHELL_StartApplet(pMe->a.m_pIShell, AEECLSID_BGAPP); }
else
{
pMe->m_bGoBg = TRUE;
// trigger EVT_APP_STOP to send app to background
ISHELL_CloseApplet(pMe->a.m_pIShell, FALSE);
}
return TRUE;
}
バックグラウンドアプリケーションの制限があります。画面を変更したり、ユーザーと直接通信したりすることはできません。開発者は、バックグラウンド アプリケーションが使用するメモリに注意する必要があります。これはとても重要です。