決済意図


111

Androidアプリが、情報を渡すインテント(ステータスバーのペンディングインテント)によって呼び出されています。

ホームボタンを押してホームボタンを押してアプリを再度開くと、インテントが再度呼び出され、同じ追加機能がまだ残っています。

    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
      super.onSaveInstanceState(savedInstanceState);
    }
    @Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
      super.onRestoreInstanceState(savedInstanceState);
    }

これは想定されたように実行されないコードです

    String imgUrl;
    Bundle extras = this.getIntent().getExtras();


    if(extras != null){
        imgUrl = extras.getString("imgUrl");
        if( !imgUrl.equals(textView01.getText().toString()) ){

            imageView.setImageDrawable( getImageFromUrl( imgUrl ) );
            layout1.setVisibility(0);
            textView01.setText(imgUrl);//textview to hold the url

        }

    }

そして私の意図:

public void showNotification(String ticker, String title, String message, 
    String imgUrl){
    String ns = Context.NOTIFICATION_SERVICE;
    NotificationManager mNotificationManager = 
        (NotificationManager) getSystemService(ns);
    int icon = R.drawable.icon;        // icon from resources
    long when = System.currentTimeMillis();         // notification time
    CharSequence tickerText = ticker;              // ticker-text

    //make intent
    Intent notificationIntent = new Intent(this, activity.class);
    notificationIntent.putExtra("imgUrl", imgUrl);
    notificationIntent.setFlags(
        PendingIntent.FLAG_UPDATE_CURRENT | 
        PendingIntent.FLAG_ONE_SHOT);
    PendingIntent contentIntent = 
        PendingIntent.getActivity(this, 0, 
        notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT | 
        PendingIntent.FLAG_ONE_SHOT);

    //make notification
    Notification notification = new Notification(icon, tickerText, when);
    notification.setLatestEventInfo(this, title, message, contentIntent);
    //flags
    notification.flags = Notification.FLAG_SHOW_LIGHTS | 
        Notification.FLAG_ONGOING_EVENT | 
        Notification.FLAG_ONLY_ALERT_ONCE | 
        Notification.FLAG_AUTO_CANCEL;
    //sounds
    notification.defaults |= Notification.DEFAULT_SOUND;
    //notify
    mNotificationManager.notify(1, notification);
}

インテントをクリアする方法、またはそれが以前に使用されたかどうかを確認する方法はありますか?


コードを投稿できますか?
xandy

私の質問にコードを追加しました
Mars

Intentをクリアする代わりに、起動タイプを決定し、それに応じてアプリフローを処理できます。通知のために起動され、バックグラウンドから起動されていない場合にのみ、エクストラを取得します。stackoverflow.com/questions/4116110/clearing-intent/...
BB

回答:


168

更新:

この回答が5年以上前に最初に書いたときに、この回答があまり参照されないことを知りませんでした。

@ tato-rodrigoの回答に従って、これは状況によってはすでに処理されたインテントを検出するのに役立ちません。

また、私は理由のために引用符に「クリア」を入れたことを指摘しなければなりません- これを行うことでインテントを本当にクリアするのではなく、このインテントがすでにアクティビティによって見られているというフラグとしてエクストラの削除を使用しているだけです。


私はまったく同じ問題を抱えていました。

上記の答えは私を正しい軌道に乗せ、私はさらに簡単な解決策を見つけました、以下を使用してください:

getIntent().removeExtra("key"); 

インテントを「クリア」するためのメソッド呼び出し。

これは1年前に尋ねられたので少し遅い回答ですが、うまくいけば、これは将来的に他の人に役立ちます。


4
removeExtra()メソッドはStringパラメータを取りませんか?このようにgetIntent()。removeExtra( "String");
tony9099 2013年

25
@Maks私は間違っているかもしれませんが、これは次のシナリオでは機能しないと思います:1)通知からアクティビティを開きます。2)戻るボタンを押してアクティビティを終了します。3)履歴(最近のアプリ)からアクティビティを再度開きます。別のケースは、リソース不足のためにシステムがアプリを強制終了した場合です(開発者オプションの下で[アクティビティを保持しない]を有効にしてから、ホームを押してから、履歴からアクティビティを再度開いてください)。私が使用しているソリューションを以下に投稿しました。これについてコメントしていただければ嬉しいです。
tato.rodrigo 2014

2
残念ながらそれは私たちのために動作しません。新しいアクティビティを開始すると、最初のアクティビティが開始され、同じインテントでOnNewIntentが再度発生することがわかります。
Le-roy Staines、

2
Intentをクリアする代わりに、起動タイプを決定し、それに応じてアプリフローを処理できます。通知のために起動され、バックグラウンドから起動されていない場合にのみ、エクストラを取得します。stackoverflow.com/questions/4116110/clearing-intent/...
BB

2
私のために働いていませんでした。@ tato.rodrigoが言及したのと同じ問題に直面していましたが、通知によって、または履歴またはその他の理由からアクティビティが開かれた場合にインテントがクリアされなかったため、インテント情報を使用した後にインテントをリセットして、これsetIntent(new Intent())とその現在は正常に動作しています。
Shubhral 2017年

43

編集:私は使用している完全なソリューションを投稿するために編集しています。

このソリューションは、問題が「アクティビティが履歴から開始されたときに一部のコードを実行しない(最近のアプリ)」である場合に機能します。

まず、がすでに消費されているかどうかを示すためbooleanにをで宣言します。ActivityIntent

    private boolean consumedIntent;

次に、onSaveInstanceStateおよびonCreateメソッドを使用してこの値を安全に保存および復元し、構成の変更を処理して、システムがActivityバックグラウンドになったときにシステムが強制終了される可能性がある場合を処理します。

    private final String SAVED_INSTANCE_STATE_CONSUMED_INTENT = "SAVED_INSTANCE_STATE_CONSUMED_INTENT";

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putBoolean(SAVED_INSTANCE_STATE_CONSUMED_INTENT, consumedIntent);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //set content view ...

        if( savedInstanceState != null ) {
            consumedIntent = savedInstanceState.getBoolean(SAVED_INSTANCE_STATE_CONSUMED_INTENT);
        }

        //other initializations
    }

次に、onResumeメソッドの下でコードを実行できるかどうかを確認します。

    @Override
    protected void onResume() {
        super.onResume();

        //check if this intent should run your code
        //for example, check the Intent action
        boolean shouldThisIntentTriggerMyCode = [...];
        Intent intent = getIntent();
        boolean launchedFromHistory = intent != null ? (intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0 : false;
        if( !launchedFromHistory && shouldThisIntentTriggerMyCode && !consumedIntent ) {
            consumedIntent = true;
            //execute the code that should be executed if the activity was not launched from history
        }
    }

さらに、Activityがに設定さsingleTopれている場合、新しいものIntentが配信されたときにフラグをリセットする必要があります。

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        consumedIntent = false;
    }

12
どうもありがとう!私はこのコードを手伝ってくれた(intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY)ので、アクティビティの開始がいつ履歴からのものであるかを理解でき、余分なものを無視できます。
ローマナザレビッチ2014年

1
@Lemberg私も同じ問題を抱えており、私はあなたと同じように解決しました。プッシュ通知に由来するいくつかの追加機能を使用すると、履歴からアクティビティを開始するリスクがあり、アウェイは追加機能を消費し、あなたのような同じアクションにリダイレクトしますプッシュ通知。フラグ
launchFromHistory

アクティビティが破棄され、履歴スタックから再度開いた場合でも機能しますか?
user25

すごい!アプリが破壊されても動作するようです...しかし、@ tato.rodrigoをboolean shouldThisIntentTriggerMyCode = [...];回答から削除してください(何に使用されますか?)
user25

私の場合、特定のユーザーに複数の通知がある場合、通知Uidが含まconsumedIntentれているので、より良いユーザーStringです。このUidは、現在のタイムスタンプとしてバックエンドの通知に単に追加できます。また、このUidはonSaveInstanceState、Intentが形式になっている場合にのみ保存する必要がありますonCreate。つまり、からUidを保存してはいけませんonNewIntent
Konstantin Konopko

22

Maksの回答は、余分なものをクリアするために機能します。

    getIntent().removeExtra("key"); 

別の便利なコマンドは次のとおりです。

    getIntent().setAction("");

次を呼び出すことで、インテントにタグを付けることもできます。

    getIntent().putExtra("used", true);

値を確認します。


21

履歴からAndroidアプリを起動するとき(最近のアプリ)、アプリは主に3つの異なるインテントフラグで起動できます。

  1. FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
    これは、最小化されたアプリの履歴からアクティビティが起動されているときです(ホームキーを長押し)。定数値
    1048576(0x00100000)
  2. FLAG_ACTIVITY_NEW_TASK
    これは、「アプリケーションアイコンをクリック」または「インテントフィルター」を介してアクティビティが起動されたときです。ここで、アクティビティはこの履歴スタックの新しいタスクの開始になります。定数値
    268435456(0x10000000)
  3. FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY | FLAG_ACTIVITY_NEW_TASK
    これは、戻るボタンを押してアプリを終了し、履歴から再開したときです(最近のアプリ)。定数値
    269484032(0x10100000)

定数値は、 getIntent().getFlags()

3番目のケースでは、Androidはメモリから最後のインテント値をリロードします。したがって、アプリのインテント(getIntent)には、アプリを起動した最後のインテントの値が含まれます。

実際には、アプリは新規起動であるかのように動作し、前回の起動のインテント値ではなく、新規起動のインテント値を使用する必要があります。この動作は、アプリのアイコンをクリックしてアプリを起動した場合に確認できます。古いインテントの値はありません。これは、Androidがこのシナリオで次のインテントフィルターを使用するためです。

 <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER"/>
 </intent-filter>

ただし、3番目のケース(終了したアプリはHistory of Recent appsから起動されます)では、Android OSは、終了する前に([戻る]ボタンを押して)アプリを起動した最後のインテントを使用します。つまり、古いインテントの値を取得してしまい、アプリのフローが適切ではなくなります。

インテントを削除することはそれを解決する1つの方法ですが、それは問題を完全に解決しません!Android OSはアプリから最後の起動からインテントをリロードするため、起動インテントの最後のインスタンスではありません。

これを回避するためのクリーンな方法は、インテントのタイプを取得して起動タイプを決定することで処理することです。

だからあなたのLaunchActivity(マニフェストで定義されたインテントフィルタを持つ1)に、あなたは、次のコードを使用することができonCreate()onStart()またはonResume()方法。

if(getIntent().getFlags() == (Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY)) {
    //app is launched from recent apps after it was closed
        normalLaunch();
    } else {
        String intentAction = getIntent().getAction();
        String scheme = getIntent().getScheme();
        //app is launched via other means
        // URL intent scheme, Intent action etc
        if("https".equalsIgnoreCase(scheme)) {
            // URL intent for browser
        } else if("com.example.bb".equalsIgnoreCase(intentAction)) {
            // App launched via package name
        } else {
            // App was launched via Click on App Icon, or other means
            normalLaunch();
        }
    }

私は推測しnormalLaunch()ますが、インテントのパラメータを使用しないでください。それ以外の場合は、デフォルトの起動方法を分離して最適化し、インテントパラメータを使用しないようにする必要があります。


1
すべてのヒーローが帽子をかぶっているわけではありません!
Sdghasemi

わかりませんが、getIntent().getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY別のアクティビティからアクティビティを開始した場合(startActivityメソッド)、履歴スタックから再度開いた場合(最近のアプリ)は、常にtrueを返します。
user25

あなたは多分FLAG_ACTIVITY_NEW_TASK、他のフラグと組み合わせて使用する必要があります
BB

1
これは、Devの設定「アクティビティを保持しない」のためにアクティビティがバックグラウンドで強制終了された場合は機能しません。この場合、getIntent()getFlags()は、アクティビティが初めて開始されたときと同じです。
Malachiasz 2018年

説明には感謝しますが、意図したとおりではありません
Azlan Jamal

18

インテントオブジェクトのクリア:

intent.replaceExtras(new Bundle());
intent.setAction("");
intent.setData(null);
intent.setFlags(0);

2
これは受け入れられる答えになるはずです。本当にうまくいきます!
Martin Erlic、2015年

2
開発者オプションで「アクティビティを保持しない」がオンになっていると機能しません
Jemshit Iskenderov

8

短い答えは仕方がない

長い答え。「一発」の意図などはありません。実験から、最近のAndroidの最近のアクティビティ履歴は「インテント履歴」にすぎないことがわかります。アクティビティに渡された最新の意図は、単にシステムにログインするだけであり、それが取り決めです。上記の人々は使用することをお勧めします

setAction("")

しかし、インテントはonNewIntent()またはonStart()メソッド内で取得する瞬間まですでにログに記録されているため、機能しません。

インテントの使用を回避することで問題を解決しました。私の問題は、著者が投稿した問題に似ています。通知領域のコントロールを介してアプリケーションからグローバル終了を実装しようとしました。基盤となるサービスを停止し、アプリのすべてのアクティビティを閉じます。Wazeアプリケーションでも同じ動作が見られます。

アルゴリズム:

  1. 「終了」アクションをアクティビティに渡す通知コントロールのPendingIntentを作成します。しかし、単純なプロキシである特別な活動に。
  2. プロキシアクティビティのonStart()コードは、インテントを解析し、アクションをチェックして、一部のモデルの状態を「終了」に設定します。
  3. プロキシアクティビティのonStart()コードは、setIntent( "")を使用して元のインテントをクリアし、startActivity(intent)を呼び出して宛先 "Root"アクティビティに転送します。
  4. プロキシアクティビティのonStart()コードがfinish()を呼び出します。
  5. 宛先アクティビティのonStart()およびonNewIntent()内でモデルの状態を確認し、「終了」の場合はfinish()を呼び出します(私の場合は、stopService()も呼び出します)。

私はインターネットで答えを見つけられなかったので、これが誰かに役立つことを願っています。


「意図をクリアする」とは必ずしも「特定の余分なものを削除する」ことを意味しないため、これが最も正確な答えだと思います。それを行う簡単な方法もないと思います。
mdelolmo 14

5

あなたが使用していることを確認してくださいPendingIntent.FLAG_UPDATE_CURRENTのためのフラグをPendingIntent

PendingIntent pendingIntent = PendingIntent.getActivity(this, 100, mPutIntent, PendingIntent.FLAG_UPDATE_CURRENT);

mPutIntentあなたはどこですかIntent

これがお役に立てば幸いです。


1
私を助けた!!
eren130 2016

1
これが受け入れられた答えではないのかわかりません。私の唯一の後悔はただ1つです。単一の賛成票を持つことです。乾杯。
アンディ

2

私は最近この問題を抱えていましたが、インテントに追加のパラメーターとしてタイムスタンプを追加することで解決しました:

private void launchActivity(Context context) {
    Intent intent = new Intent(context, MainActivity.class);
    intent.putExtra("KEY_EXTRA_TIMESTAMP", System.currentTimeMillis());
    context.startActivity(intent);
}

その後、タイムスタンプを共有設定に保存します。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    long time = getIntent().getLongExtra("KEY_EXTRA_TIMESTAMP", -1);
    long previousTime = getPreferences(MODE_PRIVATE).getLong("timestamp", -1);

    //ignore if the timestamp is the same as the previous one  
    if (time != previousTime) {
        handleIntent(getIntent());
        if (time != -1) {
            //save the timestamp
            getPreferences(MODE_PRIVATE).edit().putLong("timestamp", time).apply();
        }
    }
}

1

私はまったく同じ問題を抱えています。私の解決策は、「使用された」booleanときに設定された変数を追加し、これに基づいてステートメントを使用するかどうかを確認することでした。IntentifbooleanIntent


3
アクティビティが停止してから再起動するとブール値が再作成されるため(アクティビティでグローバルとして宣言されている場合)、これは機能しない可能性があります。(たとえば、ホームボタンをクリックする)
tony9099 2013年

1

インテントの処理が完了したら、次のようにします。

setIntent(null);

処理されたインテントが再び表示されることはなく、処理されたインテントのコンテンツを編集して問題を隠すこともありません。


1

Intent Extraを削除する方法が見つかりませんでした。開発者オプションから[ アクティビティを保持しない]を有効にした場合、インテントからエクストラを削除することに関する回答は機能しません(このようにして、アクティビティを破棄し、エクストラがまだあるかどうかをテストすることができます)。

問題の解決策として、Intent Extrasが処理された後、ブール値をSharedPreferencesに保存しました。同じインテントがアクティビティに再配信されると、SharedPreferenceの値を確認して、インテントエクストラを処理することにします。同じアクティビティに別の新しいインテントエクストラを送信する場合は、SharedPreferenceの値をfalseにすると、アクティビティによって処理されます。

// Start Activity with Intent Extras
Intent intent = new Intent(context, MyActivity.class);
intent.putExtra("someData", "my Data");
// Set data as not processed
context.getSharedPreferences(BuildConfig.APPLICATION_ID, Context.MODE_PRIVATE).edit().putBoolean("myActivityExtraProccessed", false).commit();
context.startActivity(intent);

...

public class MyActivity{

    ...
    public void someMethod(){
        boolean isExtrasProcessed = context.getSharedPreferences(BuildConfig.APPLICATION_ID, Context.MODE_PRIVATE).getBoolean("myActivityExtraProccessed", false);  
         if (!isExtrasProcessed) {
              // Use Extras

              //Set data as processed
              context.getSharedPreferences(BuildConfig.APPLICATION_ID, Context.MODE_PRIVATE).edit().putBoolean("myActivityExtraProccessed", true).commit();
         }
    }

}

あなたはstartActivityを使用して活動を開始したり、履歴のスタックからそれを再度開くかどうかわからないと好みが...意味がありません
user25

@ user25最近のアプリから起動されたかどうかを検出する方法があったと思います。しかし、それが問題であるかどうか、意図された余分が消費されるかどうかは、それが消費される場合、共有された設定からそれを知っています。私はこれを追加のプッシュ通知を消費するために使用しており、私のケースのアクティビティがどのように開かれるかは問題ではありません。
Jemshit Iskenderov

0

解析後にIntentおよびIntentエキストラを手動でクリアした後でも、Activity.getIntent()は常にアクティビティを開始した元のIntentを返すようです。

これを回避するには、次のようなものをお勧めします。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // The Intent provided by getIntent() (and its extras) will persist through a restore
    // via savedInstance.  Because of this, restoring this activity from a
    // an instance that was originally started with extras (deep-link or 
    // pre-defined destination) may cause un-desired behavior
    // (ie...infinite loop of sending the user directly to somewhere else because of a
    // pre-defined alternate destination in the Intent's extras).
    //
    // To get around this, if restoring from savedInstanceState, we explicitly
    // set a new Intent *** to override the original Intent that started the activity.***
    // Note...it is still possible to re-use the original Intent values...simply
    // set them in the savedInstanceState Bundle in onSavedInstanceState.
    if (savedInstanceState != null) {
        // Place savedInstanceState Bundle as the Intent "extras"
        setIntent(new Intent().putExtras(savedInstanceState));
    }

    processIntent(getIntent())
}

private void processIntent(Intent intent) {
    if (getIntent().getExtras() == null) {
        // Protection condition
        return;
    }

    doSomething(intent.getExtras.getString("SOMETHING_I_REALLY_NEED_TO_PERSIST"));

    final String somethingIDontWantToPersist = 
        intent.getExtras.getString("SOMETHING_I_DONT_WANT_TO_PERSIST");

    if(somethingIDontWantToPersist != null) {
        doSomething(somethingIDontWantToPersist);
    }
}

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    // Save selective extras from original Intent...
    savedInstanceState.putString("SOMETHING_I_REALLY_NEED_TO_PERSIST", "persistedValued");
    super.onSaveInstanceState(savedInstanceState);
}

このように、元のインテント/インテントエクストラの特定の部分を明示的に保持する機能を維持しながら、元のインテントをダンプするメカニズムがあります。

すべてのアクティビティ起動モードをテストしたわけではないことに注意してください。


0

簡単な方法は、onCreate()以外のメソッドからgetIntent()を呼び出さないようにすることです。ただし、ユーザーがホームボタンをタップしてアクティビティを終了した場合、次回の起動時に問題が発生します。この問題には完全に機能する解決策はないと思います。


0

私は同じ問題に直面し、上記の方法を使用しようとしましたが、うまくいきません。

シングルトップモードを使っていたのが活動モードの発射モードのせいかもしれません。

アプリをバックグラウンドで使用し、RamEaterを使用して問題をシミュレートすると、nullに設定したり、キーを削除したりしても、インテントに常に追加の問題が発生します。

Androidの設定ストレージを使用して、パススルーがあったことを確認することで、問題はなくなりました。


0

エキストラが消費されたかどうかを知るためだけに別のエキストラを追加することはお勧めできません。なぜこれをしないのですか?

if (intent.hasExtra(EXTRA_NAME) && intent.getBooleanExtra(EXTRA_NAME, false)) {
    // consume extra here after that set it to false
    putExtra(EXTRA_NAME, false)
}   

-1

これはどう?newIntentをインテントとして設定します。

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
}

1
私はそれがうまくいくとは思いません。アクティビティが履歴から再作成されても、意図は影響を受けません。
mdelolmo 14

-1

あなたが意図をクリアしたいときはどうですか-それを空のものに置き換えますか?

例えば。

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
}

@Override 
public void onResume() {
    super.onResume();

    Intent theIntent = getIntent();
    if ("myaction".equals(theIntent.getAction()) {
         handleIntent();
         onNewIntent(new Intent());  // <--- "clear" the intent by setting empty one
    }
}

-1

これはうまくいけば皆を助けるでしょう。だから私たちは最初に意図を得る

//globally
Intent myIntent;

これをCreateのどこかに配置します

myIntent = getIntent();
String data = myIntent.getStringExtra("yourdata");
//Your process here

これを設定して、アプリが破棄または終了されるたびにデータを削除します

@Override
protected void onDestroy() {
    //TODO: Clear intents
    super.onDestroy();
    myIntent.removeExtra("data");
}
@Override
protected void onBackPressed() {
    //TODO: Clear intents
    super.onBackPressed();
    myIntent.removeExtra("data");
}

これが十分でない場合は、より多くの「オン」コールバックを見つけるだけで、アイデアがわかります


インテントは、アプリを終了したときなどにのみクリアされます。最近をスワイプします。
Pixeldroid Modding 2017

-2

ながらIntent.removeExtra("key")余分からの1つの特定のキーが削除され、また、メソッドがあるIntent.replaceExtras(バンドル)場合、インテントから全体エキストラを削除するために使用することができ、nullパラメータとして渡されます。

ドキュメントから:

インテントのエクストラを、指定されたエクストラのバンドルで完全に置き換えます。

パラメータ
extras Intentの新しいエクストラのセット。すべてのエクストラを消去する場合はnull。

putXXX()メソッドは、Nullの場合、エクストラを新しいバンドルで初期化するため、これは問題ありません。


-3
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
intent.addCategory(Intent.CATEGORY_HOME);  
startActivity(intent);

2
あなたはそれがあなたが何をしているかについてのいくつかの詳細とそれがOPの質問にどのように答えるかを提供することによってあなたの答えについて詳しく述べることを考慮すべきです。
forsvarir 2012

1
@Ramkumarこれはユーザーを家に連れて行きます。これは明らかに、onPause、onStop、またはonDestroyが呼び出される可能性のある10000のケースのうちの1つのケースにすぎません。
tony9099 2013年

これは問題とは遠く離れた関係でもありません
Hossein Shahdoost
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.