【发布时间】:2016-07-13 10:50:24
【问题描述】:
我正在尝试从通知中恢复我的活动,但它正在重新创建活动而不是恢复。
在所有关于此问题的帖子中,提及创建 PendingIntent 并使用适当的标志设置它(如下面的代码所示),并将 singleTop|singleInstance 添加到 AndroidManifest。
通知代码:
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());
我知道必须通过当前上下文传递一个意图。
当通过onResume() 上的onPause() 恢复活动时,它会恢复并恢复上一个活动状态,即运行的线程计数器具有递增的值。
问题:
从通知中恢复时(即单击通知),将重新创建活动。我试图解决这个问题
当onPause()被执行时,通过基类将当前活动状态发送到通知,从而用当前状态重新创建通知。
这是我的 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>
我可能遗漏了一些琐碎的事情,有什么建议吗?
【问题讨论】:
-
使用
singleInstance启动模式不是处理这个问题的正确方法。如果您的应用程序有超过 1 个Activity,它将大大破坏您的应用程序。你应该看看stackoverflow.com/questions/5502427/…
标签: android android-intent android-activity notifications