MainActivity.java 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. package com.edufound.mobile.activity;
  2. import android.app.Activity;
  3. import android.content.BroadcastReceiver;
  4. import android.content.Context;
  5. import android.content.Intent;
  6. import android.content.IntentFilter;
  7. import android.graphics.drawable.AnimationDrawable;
  8. import android.os.Bundle;
  9. import android.support.annotation.Nullable;
  10. import android.view.KeyEvent;
  11. import android.view.View;
  12. import android.view.ViewGroup;
  13. import android.view.WindowManager;
  14. import android.webkit.WebView;
  15. import android.widget.FrameLayout;
  16. import android.widget.ImageView;
  17. import com.edufound.mobile.R;
  18. import com.edufound.mobile.application.EApplication;
  19. import com.edufound.mobile.base.BaseActivity;
  20. import com.edufound.mobile.main.MainPersenter;
  21. import com.edufound.mobile.main.MainView;
  22. import com.edufound.mobile.util.ContextUtil;
  23. import com.edufound.mobile.util.DeviceUuidFactory;
  24. import com.edufound.mobile.util.Logger;
  25. import com.edufound.mobile.util.NotificationUtil;
  26. import com.edufound.mobile.util.SPutil;
  27. import com.edufound.mobile.util.ShowDebugUrl;
  28. //调用Persenter里面的方法
  29. public class MainActivity extends BaseActivity implements MainView {
  30. private Activity mActivity;
  31. FrameLayout mRootView;
  32. ImageView mLoading;
  33. MainPersenter mPersenter;
  34. WebView mWebView;
  35. boolean activityPay;
  36. AnimationDrawable mLoadingAnim;
  37. @Override
  38. protected void onCreate(Bundle savedInstanceState) {
  39. setContentView(R.layout.activity_main);
  40. getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
  41. mActivity = this;
  42. mPersenter = new MainPersenter(this);
  43. initCloseMain();
  44. super.onCreate(savedInstanceState);
  45. }
  46. @Override
  47. protected void initVew() {
  48. Logger.DebugE("initVew");
  49. mRootView = findViewById(R.id.main_root);
  50. mLoading = findViewById(R.id.main_webloading);
  51. mLoadingAnim = (AnimationDrawable) mLoading.getBackground();
  52. mLoadingAnim.start();
  53. // 为防止内存泄漏,用ContextUtil.getContext,但是不弹alert
  54. mWebView = new WebView(ContextUtil.getContext());
  55. // //支持alert,但是容易内存泄漏
  56. // mWebView = new WebView(MainActivity.this);
  57. mPersenter.initWebView(mWebView);
  58. mWebView.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
  59. mRootView.addView(mWebView);
  60. mWebView.bringToFront();
  61. mLoading.bringToFront();
  62. new DeviceUuidFactory(ContextUtil.getContext());
  63. mPersenter.openWeb(getIntent());
  64. }
  65. @Override
  66. public boolean onKeyDown(int keyCode, KeyEvent event) {
  67. ShowDebugUrl.dispatchKeyEvent(event, this);
  68. super.onKeyDown(keyCode, event);
  69. return mPersenter.onKeyDown(keyCode, event);
  70. }
  71. @Override
  72. public boolean onKeyUp(int keyCode, KeyEvent event) {
  73. return mPersenter.onKeyUp(keyCode, event);
  74. }
  75. @Override
  76. protected void onDestroy() {
  77. super.onDestroy();
  78. // System.exit(0);
  79. mPersenter.getJsInterfaces().desClickMusic();
  80. unregisterReceiver(mainBroad);
  81. mWebView.loadUrl("");
  82. mWebView.removeAllViews();
  83. mWebView.destroy();
  84. }
  85. @Override
  86. protected void onResume() {
  87. super.onResume();
  88. NotificationUtil.choseNotification(mActivity);
  89. if (!ContextUtil.getNetWorkState()) {
  90. //断网状态
  91. DisconnNetWork();
  92. }
  93. }
  94. @Override
  95. public void showData(String text) {
  96. // Toast.makeText(ContextUtil.getContext(), text, Toast.LENGTH_SHORT).show();
  97. }
  98. @Override
  99. public void loadUrl(String url) {
  100. mWebView.loadUrl(url);
  101. }
  102. @Override
  103. public void loadJsMehtod(String method) {
  104. mWebView.loadUrl("javascript:" + method + "");
  105. }
  106. @Override
  107. public void DisconnNetWork() {
  108. super.DisconnNetWork();
  109. if (getLocalPckClas().equals(getTopActivity(this))) {
  110. mPersenter.onDisConnNetWork();
  111. }
  112. }
  113. @Override
  114. public void ConnNeWork() {
  115. super.ConnNeWork();
  116. if (getLocalPckClas().equals(getTopActivity(this))) {
  117. mPersenter.onConnNetWork();
  118. }
  119. }
  120. @Override
  121. public Activity getActivity() {
  122. if (mActivity == null) {
  123. mActivity = this;
  124. }
  125. return mActivity;
  126. }
  127. @Override
  128. public void setActivityPay(boolean bool) {
  129. activityPay = bool;
  130. }
  131. @Override
  132. public boolean getActivityPay() {
  133. return activityPay;
  134. }
  135. @Override
  136. public void acPostDelayed(Runnable runnable, int time) {
  137. mWebView.postDelayed(runnable, time);
  138. }
  139. @Override
  140. public void destroyWeb() {
  141. mWebView.clearCache(true);
  142. mWebView.removeAllViews();
  143. mWebView.clearHistory();
  144. // mWebView.destroy();
  145. }
  146. @Override
  147. public void hideLoading() {
  148. mLoading.setVisibility(View.GONE);
  149. }
  150. @Override
  151. public void stopWebView() {
  152. mWebView.pauseTimers();
  153. }
  154. @Override
  155. public void resumeWebView() {
  156. mWebView.resumeTimers();
  157. }
  158. @Override
  159. protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
  160. super.onActivityResult(requestCode, resultCode, data);
  161. mPersenter.onActivityResult(requestCode, resultCode, data);
  162. }
  163. void initCloseMain() {
  164. IntentFilter intentFilter = new IntentFilter();
  165. intentFilter.addAction(ContextUtil.CLOSE_ACTIVITY_MAIN);
  166. intentFilter.addAction(ContextUtil.NOTIFICATION_WEB_PLAYERTIME);
  167. registerReceiver(mainBroad, intentFilter);
  168. }
  169. BroadcastReceiver mainBroad = new BroadcastReceiver() {
  170. @Override
  171. public void onReceive(Context context, Intent intent) {
  172. switch (intent.getAction()) {
  173. case ContextUtil.CLOSE_ACTIVITY_MAIN:
  174. EApplication.clearActivity();
  175. Intent intent_restart = new Intent(ContextUtil.CLOSE_ACTIVITY_SPLASH);
  176. getActivity().sendBroadcast(intent_restart);
  177. break;
  178. case ContextUtil.NOTIFICATION_WEB_PLAYERTIME:
  179. String time = intent.getStringExtra("over_time");
  180. String id = intent.getStringExtra("over_id");
  181. String neetpost = intent.getStringExtra("over_neetpost");
  182. String moduletype = intent.getStringExtra("over_moduletype");
  183. loadJsMehtod("videoTimeRecord(" + id + "," + time + "," + neetpost + ",'" + moduletype + "')");
  184. break;
  185. }
  186. }
  187. };
  188. }