Преглед изворни кода

退出功能修改;activity栈记录功能优化;添加应用启动、进入前台、进入后台、退出应用的打点功能

zengjiebin пре 8 година
родитељ
комит
21c73303fc

+ 0 - 7
app/src/main/java/com/kfzs/duanduan/BaseCompatActivity.java

@@ -59,8 +59,6 @@ public abstract class BaseCompatActivity extends CompatActivity {
 
         TAG = this.getClass().getCanonicalName();
         app = KFZSApp.getInstance();
-        app.appCompatActivityList.add(this);
-        ActivityManager.getInstance().pushActivity(this);
     }
 
     /**
@@ -74,11 +72,6 @@ public abstract class BaseCompatActivity extends CompatActivity {
         return (T) super.findViewById(id);
     }
 
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-        app.appCompatActivityList.remove(this);
-    }
 
     public void addSupportFragment(int containerViewId, BaseCompatFragment fragment, boolean isSupportBackButton) {
         addSupportFragment(containerViewId, fragment, null, isSupportBackButton);

+ 2 - 29
app/src/main/java/com/kfzs/duanduan/KFZSApp.java

@@ -13,6 +13,7 @@ import com.arialyy.aria.core.Aria;
 import com.kfzs.appstore.utils.restful.KFZSNetwork;
 import com.kfzs.duanduan.db.DataSave;
 import com.kfzs.duanduan.utils.ApkUtils;
+import com.sheep.gamegroup.util.ActivityManager;
 import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.service.DownloadService;
 import com.sheep.jiuyan.samllsheep.utils.G;
@@ -60,7 +61,6 @@ public class KFZSApp extends MultiDexApplication {
     public static ActMain actMain;
     public String GameCode = null;
 
-    public List<BaseCompatActivity> appCompatActivityList = new ArrayList<BaseCompatActivity>();
 
     public static final int MAX_DOWNLOAD_TASK_SIZE = 5;
     public HashMap<String, String> mRealDownloadUrl;
@@ -123,17 +123,6 @@ public class KFZSApp extends MultiDexApplication {
         return application;
     }
 
-    public void clearUI() {
-        try {
-            for (BaseCompatActivity appCompatActivity : appCompatActivityList) {
-                appCompatActivity.finish();
-            }
-        } catch (Exception e) {
-            Log.e(TAG, "app clearUI error" + e.getMessage() + "\n" + e.getCause());
-        } finally {
-            Log.v(TAG, "App clearUI");
-        }
-    }
 
     /**
      * quit app safe
@@ -142,11 +131,7 @@ public class KFZSApp extends MultiDexApplication {
         try {
             Aria.download(this).stopAllTask();
             stopService(new Intent(this, DownloadService.class));
-            for (BaseCompatActivity appCompatActivity : appCompatActivityList) {
-                appCompatActivity.finish();
-            }
-
-            killAppProcess();
+            ActivityManager.getInstance().finishAllActivity();
         } catch (Exception e) {
             Log.e(TAG, "quit error" + e.getMessage() + "\n" + e.getCause());
         } finally {
@@ -155,18 +140,6 @@ public class KFZSApp extends MultiDexApplication {
 
     }
 
-    /**
-     * kill App by os Process
-     */
-    public void killAppProcess() {
-
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
-            android.os.Process.killProcess(android.os.Process.myPid());
-        } else {
-            System.exit(0);
-        }
-    }
-
     private static void setContext(Context context) {
         KFZSApp.context = context;
     }

+ 0 - 2
app/src/main/java/com/sheep/gamegroup/absBase/BaseActivity.java

@@ -38,8 +38,6 @@ public abstract class BaseActivity extends AppCompatActivity {
         initView();
         initListener();
         initData();
-        ActivityManager.getInstance().pushActivity(this);
-
     }
 
     public void  showProgress(){

+ 20 - 0
app/src/main/java/com/sheep/gamegroup/util/AppUtil.java

@@ -1,11 +1,13 @@
 package com.sheep.gamegroup.util;
 
 import android.Manifest;
+import android.app.ActivityManager;
 import android.content.Context;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.support.v4.app.ActivityCompat;
 import android.telephony.TelephonyManager;
+import android.text.TextUtils;
 import android.view.WindowManager;
 
 /**
@@ -94,4 +96,22 @@ public class AppUtil {
         return (WindowManager)paramContext.getSystemService(Context.WINDOW_SERVICE);
     }
 
+    public static boolean isMainPross(Context context) {
+        return TextUtils.equals(context.getPackageName(), getCurProssName(context));
+    }
+
+
+    public static String getCurProssName(Context context){
+        int pid = android.os.Process.myPid();
+        String processName = "";
+        android.app.ActivityManager manager = (android.app.ActivityManager) context.getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
+        for (ActivityManager.RunningAppProcessInfo process: manager.getRunningAppProcesses()) {
+            if(process.pid == pid)
+            {
+                processName = process.processName;
+                return processName;
+            }
+        }
+        return processName;
+    }
 }

+ 4 - 0
app/src/main/java/com/sheep/gamegroup/util/UMConfigUtils.java

@@ -55,6 +55,10 @@ public class UMConfigUtils {
         SHEEP_CREDIT_CARD_PROGRESS_QUERY            ,//信用卡任务列表界面 ->信用卡任务进度查询列表 -> 信用卡任务进度查询
         TASK_START_APP            ,//打开任务应用或游戏
         TASK_INSTALL_APP            ,//安装应用
+        SHEEP_START            ,//启动小绵羊
+        SHEEP_RESUME            ,//小绵羊进入前台
+        SHEEP_PAUSE            ,//小绵羊进入后台
+        SHEEP_STOP            ,//退出小绵羊
         ;
         private String key;
         Event(String key){

+ 34 - 14
app/src/main/java/com/sheep/jiuyan/samllsheep/SheepApp.java

@@ -11,10 +11,12 @@ import com.sheep.gamegroup.di.components.DaggerNetComponent;
 import com.sheep.gamegroup.di.components.NetComponent;
 import com.sheep.gamegroup.di.modules.NetModule;
 import com.sheep.gamegroup.model.entity.AppRecord;
-import com.sheep.gamegroup.model.entity.TaskEty;
 import com.sheep.gamegroup.model.entity.TaskListen;
+import com.sheep.gamegroup.util.ActivityManager;
+import com.sheep.gamegroup.util.AppUtil;
 import com.sheep.gamegroup.util.ConnectAddress;
 import com.sheep.gamegroup.util.Jump2View;
+import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.MyDbManager;
 import com.sheep.gamegroup.util.UMConfigUtils;
 import com.sheep.jiuyan.samllsheep.utils.G;
@@ -91,21 +93,19 @@ public class SheepApp extends BaseApplication {
     @Override
     public void onCreate() {
         super.onCreate();
-        mContext = getApplicationContext();
-        mSheepApp = this;
-
-        String flavor = SharedPreferences.getInstance().getString("flavor", BuildConfig.FLAVOR);
-        connectAddress = ConnectAddress.valueOf(flavor);
-
-        registerActivityLifecycleCallbacks(activityLifecycleCallbacks);
-        initGoble();
-        Bugly.init(getApplicationContext(), Config.BUGLY_APPID, BuildConfig.DEBUG);
-        initNet();
+        if(AppUtil.isMainPross(this)) {
+            mContext = getApplicationContext();
+            mSheepApp = this;
+            String flavor = SharedPreferences.getInstance().getString("flavor", BuildConfig.FLAVOR);
+            connectAddress = ConnectAddress.valueOf(flavor);
+
+            registerActivityLifecycleCallbacks(activityLifecycleCallbacks);
+            initGoble();
+            Bugly.init(getApplicationContext(), Config.BUGLY_APPID, BuildConfig.DEBUG);
+            initNet();
+        }
     }
 
-
-
-
     private void initNet() {
         netComponent = DaggerNetComponent.builder().netModule(new NetModule()).build();
     }
@@ -122,12 +122,18 @@ public class SheepApp extends BaseApplication {
     }
 
     public int mActivityAount;
+    private boolean notStop = false;
     /**
      * Activity 生命周期监听,用于监控app前后台状态切换
      */
     ActivityLifecycleCallbacks activityLifecycleCallbacks = new ActivityLifecycleCallbacks() {
         @Override
         public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
+            ActivityManager.getInstance().pushActivity(activity);
+            if(mActivityAount == 0) {
+                LogUtil.println("SheepApp SHEEP_START");
+                UMConfigUtils.onEvent(UMConfigUtils.Event.SHEEP_START);
+            }
         }
 
         @Override
@@ -139,6 +145,11 @@ public class SheepApp extends BaseApplication {
         public void onActivityResumed(Activity activity) {
             UMConfigUtils.onPageStart(activity);
             if (mActivityAount > 0) {
+                if(!notStop) {
+                    notStop = true;
+                    LogUtil.println("SheepApp SHEEP_RESUME");
+                    UMConfigUtils.onEvent(UMConfigUtils.Event.SHEEP_RESUME);
+                }
                 Jump2View.getInstance().startFloat(activity, false);
             }
         }
@@ -152,6 +163,11 @@ public class SheepApp extends BaseApplication {
         public void onActivityStopped(Activity activity) {
             mActivityAount--;
             if (mActivityAount <= 0) {
+                if(notStop) {
+                    notStop = false;
+                    LogUtil.println("SheepApp SHEEP_PAUSE");
+                    UMConfigUtils.onEvent(UMConfigUtils.Event.SHEEP_PAUSE);
+                }
                 Jump2View.getInstance().startFloat(activity, true);
             }
         }
@@ -162,6 +178,10 @@ public class SheepApp extends BaseApplication {
 
         @Override
         public void onActivityDestroyed(Activity activity) {
+            if(mActivityAount == 0) {
+                LogUtil.println("SheepApp SHEEP_STOP");
+                UMConfigUtils.onEvent(UMConfigUtils.Event.SHEEP_STOP);
+            }
         }
     };