2016-08-30 4 views
5

Mam dwie Działania ChatActivity i ChatOneActivityDlaczego funkcja onDestroy() jest wywoływana, gdy uruchamiam powiadomienie? Jak temu zapobiec?

Chcę zbudować zawiadomienie w ChatActivity, a po naciśnięciu powiadomienie, znalazłem sposób onDestroy() nazywa. Czemu? Rozumiem, dlaczego wywoływana jest metoda onStop, ponieważ widok nie jest już widoczny. Ale onDestroy()? Czemu? Nie skończyłem ChatActivity!

Jak temu zapobiec? Chcę tylko wywołać metodę onStop, nie chcę, aby Activity został zabity.

Oto jak zbudować powiadomienie

private void showNotification(String id, String message) { 
    NotificationCompat.Builder builder = new NotificationCompat.Builder(
      getApplicationContext()) 
      .setSmallIcon(android.R.drawable.sym_action_email) 
      .setContentTitle("You have a new message") 
      .setContentText(message); 
    Intent intent = new Intent(ChatActivity.this, ChatOneActivity.class); 
    intent.putExtra("toId", id); 
    TaskStackBuilder stackBuilder = TaskStackBuilder 
      .create(ChatActivity.this); 
    stackBuilder.addParentStack(ChatOneActivity.class); 
    stackBuilder.addNextIntent(intent); 
    PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, 
      PendingIntent.FLAG_CANCEL_CURRENT); 

    builder.setContentIntent(pendingIntent); 
    NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
    mNotificationManager.notify(1, builder.build()); 
} 

A także mój manifest

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.webmobilegroupchat" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="11" 
    android:targetSdkVersion="16" /> 

<uses-permission android:name="android.permission.INTERNET" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.webmobilegroupchat.MainActivity" 
     android:label="@string/app_name" > 
    </activity> 
    <activity 
     android:name="com.example.webmobilegroupchat.ChatActivity" 
     android:label="@string/title_activity_chat" > 
    </activity> 
    <activity 
     android:name="com.example.webmobilegroupchat.ChatOneActivity" 
     android:label="@string/title_activity_chat_one" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="com.example.webmobilegroupchat.ChatActivity" /> 
    </activity> 
    <activity 
     android:name="com.example.webmobilegroupchat.SplashActivity" 
     android:label="@string/title_activity_splash" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

+0

Może dlatego, że odbudowa stos działalność? –

+0

nie z tego powodu –

Odpowiedz

1

Bo nazywa ten kod:

TaskStackBuilder stackBuilder = TaskStackBuilder.create(ChatActivity.this); 
stackBuilder.addParentStack(ChatOneActivity.class); 
stackBuilder.addNextIntent(intent); 
PendingIntent pendingIntent = stackBuilder.getPendingIntent(0,PendingIntent.FLAG_CANCEL_CURRENT); 

TaskStackBuilder.create zwróci nowy moduł TaskStackBuilder do uruchamiania nowego zestawu zadań składającego się z serii działań.

Wymiana je regularnie pendingintent jak to rozwiązać go:

PendingIntent pendingIntent = PendingIntent.getActivity(context, (int)System.currentTimeMillis(), intent, PendingIntent.FLAG_UPDATE_CURRENT); 
Powiązane problemy