最近在做百度云推送,发现一旦执行了setTags()操作之后,即设置或取消tag之后自动finish所有activity并跳回MainActivity,这肯定很影响用户体验啦,找了很久,也不知道为什么会这样,也重写了OnDestroy()方法,发现每次也是执行了代码。
然后,百度,Google都没有答案,去问别人,都不知道,没办法了,只能自己慢慢调试。
首先,我去看了百度推送的Demo,然后自己加上了一个Activity,把它设置为主Activity(另取名),然后运行,发现百度的Demo并没有跳回我新设置的主Activity。根据这个现象,再去看日志,才定位到了是MyPushMessageReceiver这里有问题。
输出日志如下:
MyPushMessageReceiver﹕ onDelTags errorCode=0 sucessTags=[] failTags=[job_广州地铁5号线] requestId=2736314253
MyPushMessageReceiver﹕ updateContent //执行到了这里之后就finish了
MainActivity:OnStart //从这里可以看出,每次都是Start了MainActivity
MyPushMessageReceiver.java 里面有updateContent()这个方法,果然,是在这里跳转了,注释掉这段,问题就解决了。
private void updateContent(Context context, String content) {
Log.d(TAG, "updateContent");
String logText = "" + Utils.logStringCache;
if (!logText.equals("")) {
logText += "\n";
}
SimpleDateFormat sDateFormat = new SimpleDateFormat("HH-mm-ss");
logText += sDateFormat.format(new Date()) + ": ";
logText += content;
Utils.logStringCache = logText;
// Intent intent = new Intent(); //注释掉下面这些
// intent.setClass(context.getApplicationContext(), MainActivity.class);
// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// context.getApplicationContext().startActivity(intent);
}