onResume не получают дополнения от намерения - PullRequest
0 голосов
/ 25 января 2020

В моем приложении у меня есть виджет с некоторыми кнопками. Каждая кнопка имеет различное значение putExtra, например, первая кнопка имеет значение 0, вторая 1 и т. Д. c. После нажатия кнопки виджета я хочу запустить MainActivity с некоторыми параметрами. Когда приложение закрывается и запускается в первый раз, событие onCreate получает значения из дополнений к намерениям, но когда приложение находится в фоновом режиме и вызывается событие onResume, происходит нечто странное. Я помещаю некоторые записи в onResume, и в моем logcat я получаю запись два раза. В первом журнале он получает значение от intent extra, а во втором - ноль. Похоже, onResume вызывается два раза, и только сначала имеют намерение. Это журнал из logcat:

01-25 19:55:41.840 21074-21074/com.fxteam.malcome E/FXTEAM: APP RESUME, idFromIntent: null
    EXTRAS FROM RESUME: Bundle[mParcelledData.dataSize=40]
    accountID : 1
    AccountID in onResume: 1
01-25 19:55:42.105 21222-21222/com.fxteam.malcome I/.fxteam.malcom: The ClassLoaderContext is a special shared library.
01-25 19:55:42.208 21222-21222/com.fxteam.malcome E/FXTEAM: MainActivity123
01-25 19:55:42.338 21222-21243/com.fxteam.malcome W/.fxteam.malcom: Accessing hidden method Landroid/content/Context;->bindServiceAsUser(Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/Handler;Landroid/os/UserHandle;)Z (light greylist, reflection)
01-25 19:55:42.570 21222-21222/com.fxteam.malcome W/.fxteam.malcom: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker;-><init>(Landroid/content/Context;I)V (light greylist, reflection)
01-25 19:55:42.571 21222-21222/com.fxteam.malcome W/.fxteam.malcom: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker;->logEvent(Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;)V (light greylist, reflection)
01-25 19:55:42.573 21222-21222/com.fxteam.malcome W/.fxteam.malcom: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionStarted(I)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; (light greylist, reflection)
    Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionModified(II)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; (light greylist, reflection)
    Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionModified(IILandroid/view/textclassifier/TextClassification;)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; (light greylist, reflection)
    Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionModified(IILandroid/view/textclassifier/TextSelection;)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; (light greylist, reflection)
    Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionAction(III)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; (light greylist, reflection)
    Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionAction(IIILandroid/view/textclassifier/TextClassification;)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; (light greylist, reflection)
01-25 19:55:42.662 21222-21266/com.fxteam.malcome W/.fxteam.malcom: Accessing hidden method Landroid/media/AudioManager;->getOutputLatency(I)I (light greylist, reflection)
01-25 19:55:42.690 21222-21222/com.fxteam.malcome E/FXTEAM: APP RESUME, idFromIntent: null
    EXTRAS FROM RESUME: null

Вы видите, что «EXTRAS FROM RESUME» был зарегистрирован два раза, и сначала он имел значение 1, а во второй раз он был нулевым. Вот как я отправляю намерение в виджете. java

Intent intent = new Intent(context, MainActivity.class).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("accountID", 1);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(id_button, pendingIntent);

, и вот как я получаю его в MainActivity. java

@Override
public void onNewIntent (Intent intent) {
    setIntent(intent);
}

@Override
public void onResume() {
    super.onResume();
    Bundle extras = getIntent().getExtras();
    Log.e(APP_TAG, "EXTRAS FROM RESUME: "+extras);

    if (extras != null && extras.getString("accountID") != null) {
        String accountParam = "";
        Log.e(APP_TAG, "AccountID in onResume: "+extras.getString("accountID")); 
        accountParam = "?accountID="+extras.getString("accountID");
        loadUrl("file:///android_asset/www/index.html"+accountParam);
    }
}
...