1

私はインターネット接続を受信するブロードキャストレシーバーを持っています..接続が見つからないとすぐに、「インターネット接続なし」というスプラッシュアクティビティが開きます....今まではすべて問題ありませんが、ユーザーがアプリケーションを置くとデバイスのホームボタンを使用してバックグラウンドに移動し、インターネット接続をオフにすると、アプリがバックグラウンドで実行されている間にスプラッシュ アクティビティがフォアグラウンドになります。これが発生するのは望ましくありませんが、スプラッシュ アクティビティはバックグラウンドでのみ開く必要があります。

  @Override
  public void onReceive(Context context, Intent intent) {


    //  SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);

    boolean isNetworkDown = intent.getBooleanExtra(
        ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);    

    if (isNetworkDown) {
      Log.d(TAG, "onReceive: NOT connected, stopping UpdaterService");
      Intent myintent=new Intent(context,NoConnectivity.class);
      myintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(myintent);

    } else 

    {

      Log.d(TAG, "onReceive: connected, starting UpdaterService");
      NoConnectivity.h.sendEmptyMessage(0);      


    }
  }
4

2 に答える 2

1

startActivity は、表示しているアクティビティの上にアクティビティを自動的に前面に表示します。ユーザーは、戻るボタンを使用して前のものに戻ることができます。それが通常のやり方です。

ただし、moveTaskToBack(true)アクティビティをバックグラウンドに送信するために使用できます。

機能説明はこちら。

編集

この質問を確認し、ソリューションを使用して、アクティビティがバックグラウンドにあるかどうかを確認してください。はいの場合は、上記でアドバイスした方法を使用して、新しいアクティビティをバックグラウンドに送信します。

于 2012-07-11T05:55:13.147 に答える
0
if (isNetworkDown) {
    Log.d(TAG, "onReceive: NOT connected, stopping UpdaterService");

    // Check the foreground package
    ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningTaskInfo> runningTasks = activityManager.getRunningTasks(1);
    ComponentName topActivity = runningTasks.get(0).topActivity;
    String foregroundPackageName = topActivity.getPackageName();
    if(foregroundPackageName.equals(context.getPackageName()) {
        Intent myintent = new Intent(context,NoConnectivity.class);
        myintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        context.startActivity(myintent);
    }
}
于 2014-04-09T20:42:05.260 に答える