package com.edufound.mobile.activity; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.KeyEvent; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.webkit.WebView; import android.widget.FrameLayout; import android.widget.ImageView; import com.edufound.mobile.R; import com.edufound.mobile.application.EApplication; import com.edufound.mobile.base.BaseActivity; import com.edufound.mobile.main.MainPersenter; import com.edufound.mobile.main.MainView; import com.edufound.mobile.util.ContextUtil; import com.edufound.mobile.util.DeviceUuidFactory; import com.edufound.mobile.util.Logger; import com.edufound.mobile.util.NotificationUtil; import com.edufound.mobile.util.SPutil; import com.edufound.mobile.util.ShowDebugUrl; //调用Persenter里面的方法 public class MainActivity extends BaseActivity implements MainView { private Activity mActivity; FrameLayout mRootView; ImageView mLoading; MainPersenter mPersenter; WebView mWebView; boolean activityPay; AnimationDrawable mLoadingAnim; @Override protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_main); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); mActivity = this; mPersenter = new MainPersenter(this); initCloseMain(); super.onCreate(savedInstanceState); } @Override protected void initVew() { Logger.DebugE("initVew"); mRootView = findViewById(R.id.main_root); mLoading = findViewById(R.id.main_webloading); mLoadingAnim = (AnimationDrawable) mLoading.getBackground(); mLoadingAnim.start(); // 为防止内存泄漏,用ContextUtil.getContext,但是不弹alert mWebView = new WebView(ContextUtil.getContext()); // //支持alert,但是容易内存泄漏 // mWebView = new WebView(MainActivity.this); mPersenter.initWebView(mWebView); mWebView.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); mRootView.addView(mWebView); mWebView.bringToFront(); mLoading.bringToFront(); new DeviceUuidFactory(ContextUtil.getContext()); mPersenter.openWeb(getIntent()); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { ShowDebugUrl.dispatchKeyEvent(event, this); super.onKeyDown(keyCode, event); return mPersenter.onKeyDown(keyCode, event); } @Override public boolean onKeyUp(int keyCode, KeyEvent event) { return mPersenter.onKeyUp(keyCode, event); } @Override protected void onDestroy() { super.onDestroy(); // System.exit(0); mPersenter.getJsInterfaces().desClickMusic(); unregisterReceiver(mainBroad); mWebView.loadUrl(""); mWebView.removeAllViews(); mWebView.destroy(); } @Override protected void onResume() { super.onResume(); NotificationUtil.choseNotification(mActivity); if (!ContextUtil.getNetWorkState()) { //断网状态 DisconnNetWork(); } } @Override public void showData(String text) { // Toast.makeText(ContextUtil.getContext(), text, Toast.LENGTH_SHORT).show(); } @Override public void loadUrl(String url) { mWebView.loadUrl(url); } @Override public void loadJsMehtod(String method) { mWebView.loadUrl("javascript:" + method + ""); } @Override public void DisconnNetWork() { super.DisconnNetWork(); if (getLocalPckClas().equals(getTopActivity(this))) { mPersenter.onDisConnNetWork(); } } @Override public void ConnNeWork() { super.ConnNeWork(); if (getLocalPckClas().equals(getTopActivity(this))) { mPersenter.onConnNetWork(); } } @Override public Activity getActivity() { if (mActivity == null) { mActivity = this; } return mActivity; } @Override public void setActivityPay(boolean bool) { activityPay = bool; } @Override public boolean getActivityPay() { return activityPay; } @Override public void acPostDelayed(Runnable runnable, int time) { mWebView.postDelayed(runnable, time); } @Override public void destroyWeb() { mWebView.clearCache(true); mWebView.removeAllViews(); mWebView.clearHistory(); // mWebView.destroy(); } @Override public void hideLoading() { mLoading.setVisibility(View.GONE); } @Override public void stopWebView() { mWebView.pauseTimers(); } @Override public void resumeWebView() { mWebView.resumeTimers(); } @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); mPersenter.onActivityResult(requestCode, resultCode, data); } void initCloseMain() { IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(ContextUtil.CLOSE_ACTIVITY_MAIN); intentFilter.addAction(ContextUtil.NOTIFICATION_WEB_PLAYERTIME); registerReceiver(mainBroad, intentFilter); } BroadcastReceiver mainBroad = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { switch (intent.getAction()) { case ContextUtil.CLOSE_ACTIVITY_MAIN: EApplication.clearActivity(); Intent intent_restart = new Intent(ContextUtil.CLOSE_ACTIVITY_SPLASH); getActivity().sendBroadcast(intent_restart); break; case ContextUtil.NOTIFICATION_WEB_PLAYERTIME: String time = intent.getStringExtra("over_time"); String id = intent.getStringExtra("over_id"); String neetpost = intent.getStringExtra("over_neetpost"); String moduletype = intent.getStringExtra("over_moduletype"); loadJsMehtod("videoTimeRecord(" + id + "," + time + "," + neetpost + ",'" + moduletype + "')"); break; } } }; }