2016-08-30 8 views
5

मेरे पास दो क्रियाएँ, ChatActivity और ChatOneActivityजब मैं अधिसूचना शुरू करता हूं तो ऑनस्ट्रोय() को क्यों कॉल किया जाता है? इसे कैसे रोकें?

मैं ChatActivity में एक अधिसूचना का निर्माण करना चाहते, और जब मैं अधिसूचना दबाते हैं, तो मैंने पाया onDestroy() विधि कहा जाता है। क्यूं कर? मैं समझ सकता हूं कि क्यों onStop विधि बुला रही है, क्योंकि दृश्य अब दिखाई नहीं दे रहा है। लेकिन onDestroy()? क्यूं कर? मैंने ChatActivity खत्म नहीं किया!

मैं इसे कैसे रोकूं? मैं सिर्फ onStop कॉल करने के लिए विधि चाहता हूं, मैं नहीं चाहता कि गतिविधि को मार डाला जाए।

यहाँ कैसे मैं अधिसूचना का निर्माण होता है

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()); 
} 

और यह भी मेरी प्रकट

<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

हो सकता है कि क्योंकि आप गतिविधि ढेर के पुनर्निर्माण कर रहे हैं? –

+0

इस कारण से नहीं –

उत्तर

1

क्योंकि आप इस कोड कहा जाता है:

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

TaskStackBuilder.create गतिविधियों के एक श्रृंखला से युक्त एक ताजा कार्य ढेर लॉन्च करने के लिए एक नया टास्कस्टैकबिल्डर लौटाएगा।

इस तरह एक नियमित रूप से pendingintent के साथ उन्हें जगह इसे हल:

PendingIntent pendingIntent = PendingIntent.getActivity(context, (int)System.currentTimeMillis(), intent, PendingIntent.FLAG_UPDATE_CURRENT); 
संबंधित मुद्दे

 संबंधित मुद्दे