1

Я не могу перезапустить одно действие, запущенное PendingIntent.не может перезапустить активность, начатую PendingIntent

«не может перезапустить» ничего не означает, для exmple, OnCreate или onNewIntent является никогда не называется, когда startActivity() о деятельности уже запущен.

Активности по имени MainActivity я не могу перезагрузить это SingleTop и переопределяет onNewIntent.

здесь проявляется о MainActivity.

<activity 
      android:name="com.example.MainActivity" 
      android:label="@string/app_name" 
      android:launchMode="singleTop"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

Сначала MainActivity запускается уведомлением с ожидающим ожиданием.

Мои PendingIntent является

Intent iS = new Intent(this,MainActivity.class); 
iS.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
PendindIntent pi = PendingIntent.getActivity(this, 0, iS, PendingIntent.FLAG_UPDATE_CURRENT); 

И MainActivity выполнить startService(), а служба выполнения sendBroadcast(), и BroadcastClass выполнить startActivity(Intent(this,MainActivity.class))

вот BroadcastClass.

public void onReceive(Context context, Intent intent) { 
    Intent i = new Intent(context,MainActivity.class); 

    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(i); 
} 

Тогда onNewIntent ... не называется ever onCreate.

, но когда программа запускается путем нажатия иконки на экране дома, экран OnNewIntent в MainActivity вызывается этим же потоком.

извините за плохой английский. , пожалуйста, скажите мне, что предложение изменить, если вы не возражаете.

Редактировать: onNewIntent is here.

protected void onNewIntent(Intent intent) { 
    Log.d("onNewIntent","onNewIntent"); 
    String SOMETHING = intent.getStringExtra("SOMETHING"); 

    LinearLayout ll = (LinearLayout)findViewById(R.id.ll2); 
    ll.removeAllViews(); 
    TextView textview1 = (TextView)getLayoutInflater().inflate(R.layout.textview, null); 

    textview1.setText(SOMETHING); 
    ll.addView(textview1); 
} 

"onNewIntent" не отображается в LogCat.

+0

Не могли бы вы разместить свой код onNewIntent, пожалуйста? –

ответ

1

Это bug in Android. См. Также this.

Проблема в том, что код в Android, который решает, следует ли звонить onNewIntent(), использует флаги в Intent и не проверяет флаги в манифесте.

Вы должны быть в состоянии исправить это путем добавления Intent.FLAG_ACTIVITY_SINGLE_TOP при запуске активности от радиовещательного приемника, например:

public void onReceive(Context context, Intent intent) { 
    Intent i = new Intent(context,MainActivity.class); 
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    context.startActivity(i); 
} 

Было бы полезно, если бы вы звезда и прокомментировать вопросы на Google Code. Если мы сделаем достаточно шума, это может быть исправлено до 2020 года ;-)

 Смежные вопросы

  • Нет связанных вопросов^_^