研究背景:
在消息推送时,notification调整到一个MessageActivity,然后中转到文章详情页,然后再返回MessageActivty时候,在
onActivityResult方法中,返回到主页当中。
问题就在于返回到MessageActivity的中国,黑屏一闪而过。
研究结论:在onCreate中直接中转会导致MessageActivty本身的显示没有得到体现,而是在返回到MessageActivty的时候才展示。
而从没展示到展示出现了短暂的黑屏现象
解决方法1: mHandler.postDelayed(new Runnable() {
@Override
public void run() {
ActivityUtils.startActivityForResult(MainActivity.this, MainActivity2Activity.class, null, 1);
}
}, 0);
通过handler发送一个线程到队列,从而避免了MessageActivty的自身的展示的阻塞现象
缺点:在onCreate跳转的时候,用户会看到短暂的MessageActivty画面,不过可以设置背景
解决办法2:不使用handler,而是直接跳转,但是不要再返回到MessageActivty中,
实际项目中,我的MessageActivity判断是否启动了应用
如果已经启动,直接跳到详情页面,并且销毁MessageActity,不再回来
如果没有启动,直接跳转到欢迎界面,由欢迎界面以此跳转到主页和详情页
这样由详情页推测的时候正好返回到主页当中
方法2避免了再次返回到中转activity当中
方法1案例代码:import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import com.icson.common.util.ActivityUtils;
public class MainActivity extends Activity {
private Handler mHandler = new Handler(Looper.getMainLooper());
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
ActivityUtils.startActivityForResult(MainActivity.this, MainActivity2Activity.class, null, 1);
}
}, 0);
}
//研究黑屏
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
/* ActivityUtils.startActivity(MainActivity.this, SplashActivity_.class);
finish();*/
}
}
public class MainActivity2Activity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_activity2);
}