0

ユーザー

  • 初めてアプリを開いて、
  • ホームからアプリに戻ります。

ただし、ユーザーがアプリ内のアクティビティを切り替えた場合は開始されません。

このトピックに目を通しましたが、最良の答えはsingleTaskwithを使用することonNewIntent()です。そのため、ユーザーがホームからアプリに戻った場合onNewIntent、ランチャー インテントが渡された呼び出しを使用できます。

ただし、ここに私のコードがあります:

public class AdMobSDK_DFP_Interstitial extends Activity implements AdListener {
    private static final String MOBMAX_INTERSTITIAL_AD_UNIT_ID = "/7732/test_portal7/android_app1_test_portal7/splash_banner_android_app1_test_portal7";
    private DfpInterstitialAd interstitialAd;
    private int num = 0;

    public void onNewIntent(Intent intent){
        super.onNewIntent(intent);
        Log.d("flow", "onNewIntent");

}

アプリでさまざまなアクティビティを切り替えるonNewIntent()と、常に呼び出されます。これは、ホームからアプリに戻るのと同じです。

4

1 に答える 1

0

最初にできることは、独自の「アプリケーション」オブジェクトを実装し、作成時に必要な機能を実行させることです。

public class MyApplication extends Application { 
   @Override
   public void onCreate() { 
        // Call your function
   }
}

アプリケーション オブジェクトは、アプリが動作している限り (アクティビティ/サービスがまだ実行されている限り) 動作しますが、アプリケーション オブジェクトは、ユーザーが [ホーム] を押してもすぐには破棄されず、しばらくの間動作し続ける可能性があることに注意してください。ユーザーは、関数を呼び出さずに戻ることができます。

この関数をメイン アクティビティの一部として実行する必要がある場合は、アプリケーション コンテキストにフラグを保存するだけ です public boolean alreadyDisplayed = false;。その後、アクティビティonStartで呼び出すことができます。

if ((MyApplication)getApplication().alreadyDisplayed ) {
    // Call your function
    (MyApplication)getApplication().alreadyDisplayed = true;
}

** この解決策では不十分で、メインのアクティビティがホームページから表示されるたびに関数を呼び出す必要がある場合は、あまり良くないことをする必要があります... 私ができる 1 つの提案は、実装することです同じ Application オブジェクトですが、今回は「open activity」カウンターを使用します。

public class MyApplication extends Application { 
   public int mActivityCounter = 0;
}

onStart次に、アプリ内のすべてのアクティビティでこのカウンターをインクリメントし、すべてのアクティビティでデクリメントするonStopことができます (もちろん、これはクラスMyActivityを実装し、関連するすべてのアクティビティがそれを継承するようにすることで実行できます。その後、このカウンターを使用して、他にアクティビティがあるかどうかを知ることができます)。このカウンターへのアクセスが同期されていることを確認し、必要に応じて操作する必要があることに注意してください。

これが役立つことを願っています...

于 2012-12-06T10:11:56.057 に答える