场景:当开启微信双开功能后,掉用微信支付接口后,后台activity被杀死无法收到微信结果通知回调。 不开双开功能,一切正常。
解决办法:创建一个新进程,将能通往微信支付途径的所有activity全部在此进程下运行,当启动新进程后会有1秒左右的空白,为了防止空白,采取预加载提前将进程创建好,具体代码如下:
1、创建一个service,或receiver 只要无UI都可以。并在AndroidManifest.xml文件中注册它
public class PrestrainService extends Service { @Nullable @Override public IBinder onBind(Intent intent) { return null; } }
<service android:name=".service.PrestrainService" android:process=":lhzs" />
2、在第一个运行的页面中onCreate中启动,在onDestroy中关闭
private void startHideService() { Intent intent = new Intent(this, PrestrainService.class); startService(intent); } private void stopHideService() { Intent intent = new Intent(this, PrestrainService.class); stopService(intent); }3、途径支付页面过程中的所有页面都在AndroidManifest.xml文件中启用该进程
<activity android:name=".activity.MainActivity" android:launchMode="singleTask" android:screenOrientation="portrait" android:process=":lhzs"/>
<activity android:name=".activity.ProductDetailMainActivity" android:screenOrientation="portrait" android:process=":lhzs"/>
<activity android:name=".activity.EaseFindDrugsActivity" android:screenOrientation="portrait" android:process=":lhzs"/>