3

アプリケーションがバックグラウンド モードで実行されているときに、ユーザーが通知を受け取るかどうかを設定できるアプリケーションを作成しました。通知が有効になっている場合は、アクティビティを開始する必要があります (画面にダイアログが表示されます)。

次の方法で有効にしようとしました。

@Override
public void onProductsResponse(List<Product> products) {
    this.products = products;
    moboolo.setProducts(products);
    if(moboolo.getAutomaticNotificationsMode() != 0 && products.size() > 0){
        if(isRunningInBackground)
        {
            Intent intent = new Intent(this, ProductListActivity.class);
            intent.setAction(Intent.ACTION_MAIN);
            startActivity(intent);
        }
    }
    drawProducts(products);

}

これはメイン アクティビティのメソッドです。onPause() が実行されると、isRunningInBackground が true に設定されます。メインアプリケーションがバックグラウンドで実行されているときにデバッグしようとすると、次の行

startActivity(intent) は効果がありませんでした (アクティビティは表示されませんでした)。

メイン アクティビティがバックグラウンドで実行されているときに (onPause() が呼び出された後)、メイン アクティビティからアクティビティを開始するためにロジックを中間化する方法を知っている人はいますか?

ありがとうございました。

4

3 に答える 3

7

Activityバックグラウンドで実行されているアプリケーションから を 強制的に表示することはできません。ドキュメントには次のように書かれています

アプリケーションがバックグラウンドで実行されており、ユーザーの注意が必要な場合、アプリケーションは通知を作成して、ユーザーが都合のよいときに応答できるようにする必要があります。

あなたActivityが一時停止している場合、ユーザーは別のアプリケーションで何か他のことをしている可能性があり、おそらくActivity現在行っていることの上にあなたが突然表示されることを望んでいません.

Status Bar Notificationを使用する必要があります。これにより、アプリケーションはステータス バーにアイコンを配置できます。その後、ユーザーはステータス バーの引き出しを下にスライドし、通知をクリックしてアプリケーションを開き、関連する を表示できますActivity。これは、大多数の Android アプリがバックグラウンドで実行されているときにユーザーに通知する方法です。

于 2010-01-10T12:22:50.127 に答える
2
Intent i= new Intent("android.intent.category.LAUNCHER");
i.setClass(getApplicationContext(), MyActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
PendingIntent i2 = PendingIntent.getActivity(getApplicationContext(), 0, insIntent,Intent.FLAG_ACTIVITY_NEW_TASK);
try {
     i2.send(getApplicationContext(), 0, i);
} catch (Exception e) {
     e.printStackTrace();
}

そして、MyActivity の onCreate で...

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

メイン アクティビティがバックグラウンドで実行されている場合、これによりアクティビティがフロント イベントに移動します。

于 2013-12-12T15:32:00.993 に答える