Ich versuche, meine Aktivität von einer Benachrichtigung fortzusetzen, aber es erstellt die Aktivität neu und wird nicht fortgesetzt.Fortsetzen der Aktivität von der Benachrichtigung, die onCreate aufruft
Wie alle Beiträge in Bezug auf dieses Problem, erwähnen Sie die Erstellung eines PendingIntent
und die Einstellung mit den entsprechenden Flags (wie im folgenden Code gezeigt), und das Hinzufügen der singleTop|singleInstance
AndroidManifest.
Mitteilung Code:
NotificationManager mNotifyMan = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
mNotifyMan.cancelAll();
Notification.Builder mNB = new Notification.Builder(this);
mNB.setOngoing(true);
Intent intent = new Intent(parentContext, main.class);
intent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
PendingIntent pendingIntent = PendingIntent.getActivity(parentContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
mNB.setContentIntent(pendingIntent);
mNB.setSmallIcon(R.drawable.ic_notify_icon);
mNB.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_noti_large));
mNB.setContentTitle(Title);
mNB.setContentText(Message);
mNB.setColor(0);
mNotifyMan.notify(777, mNB.build());
Ich verstehe, muss man eine Absicht mit dem aktuellen Kontext übergeben.
Beim Fortsetzen einer Aktivität über onPause()
unter onResume()
wird der letzte Aktivitätsstatus wiederhergestellt und wiederhergestellt, d. H. Ein laufender Thread-Zähler hat inkrementierte Werte.
Problem:
Wenn aus der Meldung wieder aufzunehmen (d.h. Klick auf die Benachrichtigung), wird die Aktivität wiederhergestellt. Ich habe versucht, dies zu lösen, indem
wenn onPause()
ausgeführt wird, den aktuellen Aktivitätsstatus über die Basisklasse an die Benachrichtigung senden und so die Benachrichtigung mit dem aktuellen Status neu erstellen.
Hier ist meine AndroidManifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.cynetstudios.wifimanager">
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-feature android:name="android.hardware.wifi" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:launchMode="singleInstance">
<activity android:name="com.cynetstudios.frequencyselector.main" android:configChanges="orientation|screenSize|keyboardHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name="com.cynetstudios.frequencyselector.serviceWifiFreqManager" android:exported="false"/>
</application>
</manifest>
ich trivial fehlt etwas sein könnte, einen Rat?
Der Startmodus 'singleInstance' ist nicht der richtige Weg, um damit umzugehen. Wenn Ihre App mehr als 1 "Aktivität" hat, wird Ihre App viel Zeit verlieren. Sie sollten http://stackoverflow.com/questions/5502427/resume-application-and-stack-from-notification/5502950#5502950 –