package com.xscm.midi; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.PersistableBundle; import android.util.Log; import androidx.annotation.Nullable; import com.alibaba.android.arouter.launcher.ARouter; import com.xscm.modulelogin.activity.ImproveInfoActivity; import com.xscm.moduleutil.activity.BaseAppCompatActivity; import com.xscm.moduleutil.base.AppStateListener; import com.xscm.moduleutil.base.AppStateManager; import com.xscm.moduleutil.base.CommonAppContext; import com.xscm.moduleutil.dialog.PolicyDialog; import com.xscm.moduleutil.utils.ARouteConstants; import com.xscm.moduleutil.utils.SpUtil; import com.xscm.midi.databinding.ActivityLaunchPageBinding; /** APP准备启动 * * _oo0oo_ * o8888888o * 88" . "88 * (| -_- |) * 0\ = /0 * ___/`---'\___ * .' \\| |// '. * / \\||| : |||// \ * / _||||| -卍-|||||- \ * | | \\\ - /// | | * | \_| ''\---/'' |_/ | * \ .-\__ '-' ___/-. / * ___'. .' /--.--\ `. .'___ * ."" '< `.___\_<|>_/___.' >' "". * | | : `- \`.;`\ _ /`;.`/ - ` : | | * \ \ `_. \_ __\ /__ _/ .-` / / *=====`-.____`.___ \_____/___.-`___.-'===== * `=---=' * * 佛祖保佑 永无BUG * 佛曰: * 写字楼里写字间,写字间里程序员; * 程序人员写程序,又拿程序换酒钱。 * 酒醒只在网上坐,酒醉还来网下眠; * 酒醉酒醒日复日,网上网下年复年。 * 但愿老死电脑间,不愿鞠躬老板前; * 奔驰宝马贵者趣,公交自行程序员。 * 别人笑我忒疯癫,我笑自己命太贱; * 不见满街漂亮妹,哪个归得程序员? */ public class LaunchPageActivity extends BaseAppCompatActivity { private Handler handler; private PolicyDialog policyDialog; private AppStateListener appStateListener; @Override public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) { super.onCreate(savedInstanceState, persistentState); // 获取Application实例并设置监听器 CommonAppContext app = (CommonAppContext) getApplication(); appStateListener = AppStateManager.getInstance(); app.setAppStateListener(appStateListener); if (!isTaskRoot()) { if (SpUtil.getUnderagePassword() != null && !SpUtil.getUnderagePassword().isEmpty()) { ARouter.getInstance().build(ARouteConstants.H5).withString("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url() + "/web/index.html#/pages/feedback/teenage?id=" + SpUtil.getToken()) .withString("type", "1").navigation();//type==1:青少年模式 } else { // 如果没有设置青少年模式,应该导航到首页 try { ARouter.getInstance().build(ARouteConstants.ME).navigation(); } catch (Exception e) { Log.e("LaunchPageActivity", "导航到首页失败", e); } } finish(); return; } // if (shouldRestoreRoom()) { // ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("form", "首页").withString("roomId", CommonAppContext.getInstance().playId).navigation(); // } } private boolean shouldRestoreRoom() { // 检查是否应该恢复房间: // 1. 应用有正在播放的房间 // 2. 应用应该显示房间 // 3. 应用是从后台恢复的(通过检查 CommonAppContext 状态) return CommonAppContext.getInstance().isPlaying && CommonAppContext.getInstance().isShow; } @Override protected void initData() { handler = new Handler(); // 定义一个Runnable Runnable runnable = new Runnable() { @Override public void run() { initLogin(); } }; if (SpUtil.isAgreePolicy()) { initLogin(); // //延迟1.5秒执行 // handler.postDelayed(runnable, 2500); } else { policyDialog = new PolicyDialog(this); policyDialog.setCancelable(false); policyDialog.setCanceledOnTouchOutside(false); policyDialog.setPolicyClickListener(new PolicyDialog.PolicyClickListener() { @Override public void policyAgree() { SpUtil.completeAgreePolicy(); // CommonAppContext.getInstance().initialization(); initLogin(); } @Override public void policyExit() { finish(); } }); policyDialog.show(); } } @Override protected void onDestroy() { // 如果 PolicyDialog 仍在显示,则 dismiss 它 if (policyDialog != null && policyDialog.isShowing()) { policyDialog.dismiss(); policyDialog = null; } // 移除所有待处理的回调以防止内存泄漏 if (handler != null) { handler.removeCallbacksAndMessages(null); } super.onDestroy(); } @Override protected void initView() { } private void initLogin() { // 在启动新 Activity 前先关闭对话框 if (policyDialog != null && policyDialog.isShowing()) { policyDialog.dismiss(); policyDialog = null; } startActivity(new Intent(this, PasswordLoginActivity.class)); finish(); } @Override protected int getLayoutId() { return R.layout.activity_launch_page; } @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (!isTaskRoot()) { finish(); return; } } }