endian11
2019-09-19 a4d1aa42cd38b6118c37eee75c5f8a381f5fbb36
修改log保存目录;lib库修改与远程service有关的放到一个单例类里面
3个文件已修改
1个文件已添加
223 ■■■■■ 已修改文件
app/src/main/java/safeluck/drive/evaluation/util/MyLog.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
build.gradle 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lib/src/main/java/com/anyun/exam/lib/AYSdk.java 93 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lib/src/main/java/com/anyun/exam/lib/SvrManager.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/util/MyLog.java
@@ -33,7 +33,7 @@
    private static char MYLOG_TYPE = 'v';
    // 日志文件在sdcard中的路径
    private static String MYLOG_PATH_SDCARD_DIR = "/sdcard/nvlog";
    private static String MYLOG_PATH_SDCARD_DIR = "/sdcard/nvjiakaolog";
    private static int SDCARD_LOG_FILE_SAVE_DAYS = 3;// sd卡中日志文件的最多保存天数
build.gradle
@@ -7,7 +7,7 @@
        
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.0'
        classpath 'com.android.tools.build:gradle:3.4.0'
        
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
lib/src/main/java/com/anyun/exam/lib/AYSdk.java
@@ -18,13 +18,11 @@
    private static final String TAG = "AYSDK";
    private IAYExamListener mCallback;
    //远程服务接口
    private IRemoteInterface remoteInterface;
    //安运驾考系统 sdk 单例模式
    private  volatile static  AYSdk ourInstance = null;
    private Context mContext;
    private MyServiceConn conn;
    public static AYSdk getInstance() {
        if (ourInstance == null){
@@ -44,9 +42,7 @@
    public void init(Context context){
        this.mContext = context;
        //bind service
        Intent intent = new Intent(mContext,RemoteService.class);
        conn = new MyServiceConn();
        mContext.bindService(intent,conn,Context.BIND_AUTO_CREATE);
    SvrManager.getInstance().bindRemoteService(mContext);
    }
@@ -56,15 +52,8 @@
     */
    public void uninit(){
        if (mContext != null){
            if (remoteInterface!=null && remoteInterface.asBinder().isBinderAlive()){
                try {
                    remoteInterface.unRegistListener(RemoteCallback);
                } catch (RemoteException e) {
                    e.printStackTrace();
                }
            }
            mContext.unbindService(conn);
        //UnbinService
            SvrManager.getInstance().unBindRemoteService(mContext);
        }else{
            Log.e(TAG,"mContext == null,please init SDK firstly");
            throw new RuntimeException("mContext == null,please init SDK firstly");
@@ -75,20 +64,6 @@
    }
    /**
     * 远程服务回调通知客户端消息
     */
    IListenerInterface RemoteCallback = new IListenerInterface.Stub(){
        @Override
        public void onMessageArrived(String json) throws RemoteException {
                if (mCallback != null){
                    mCallback.callBackMsg(json);
                }
        }
    };
    @Override
    public void checkSignal(int type) {
@@ -97,65 +72,17 @@
    @Override
    public void add() {
        if (!checkRemoteIsNull()){
            try {
                remoteInterface.add();
            } catch (RemoteException e) {
                e.printStackTrace();
            }
        }
        SvrManager.getInstance().add();
    }
    @Override
    public void registListener(IAYExamListener iayExamListener) {
        this.mCallback = iayExamListener;
    }
    /**
     * 检查远程服务是否可以使用
     * @return 可以用false,不可以用true
     */
    private boolean checkRemoteIsNull() {
        return remoteInterface==null?true:false;
    }
    class MyServiceConn implements ServiceConnection {
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
             remoteInterface = IRemoteInterface.Stub.asInterface(service);
            try {
                //设置死亡代理
             service.linkToDeath(mDeathRecipient,0);
                remoteInterface.registListener(RemoteCallback);
            } catch (RemoteException e) {
                e.printStackTrace();
            }
        }
        @Override
        public void onServiceDisconnected(ComponentName name) {
        }
        SvrManager.getInstance().registerListener(iayExamListener);
    }
    /**
     * Binder断裂回调
     * 如果服务端进程由于某种异常原因停止
     */
    private IBinder.DeathRecipient mDeathRecipient = new IBinder.DeathRecipient() {
        @Override
        public void binderDied() {
            Log.e(TAG,"IBinder.DeathRecipient binderDied");
            if (remoteInterface != null){
                Log.e(TAG,"IBinder.DeathRecipient binderDied remoteInterface != null ,return");
                return;
            }
            remoteInterface.asBinder().unlinkToDeath(mDeathRecipient,0);
            remoteInterface = null;
        }
    };
}
lib/src/main/java/com/anyun/exam/lib/SvrManager.java
New file
@@ -0,0 +1,126 @@
package com.anyun.exam.lib;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
import java.util.LinkedList;
/**
 * MyApplication2
 * Created by lzw on 2019/9/19. 18:19:48
 * 邮箱:632393724@qq.com
 * All Rights Saved! Chongqing AnYun Tech co. LTD
 */
class SvrManager {
    private static final SvrManager ourInstance = new SvrManager();
    private static final String TAG = "SvrManager";
    private MyServiceConn conn;
    private IAYExamListener mCallback;
    //远程服务接口
    private IRemoteInterface remoteInterface;
    static SvrManager getInstance() {
        return ourInstance;
    }
    private SvrManager() {
    }
    /**
     * 检查远程服务是否可以使用
     * @return 可以用false,不可以用true
     */
    private boolean checkRemoteIsNull() {
        return remoteInterface==null?true:false;
    }
    /**
     * Binder断裂回调
     * 如果服务端进程由于某种异常原因停止
     */
    private IBinder.DeathRecipient mDeathRecipient = new IBinder.DeathRecipient() {
        @Override
        public void binderDied() {
            Log.e(TAG,"IBinder.DeathRecipient binderDied");
            if (remoteInterface != null){
                Log.e(TAG,"IBinder.DeathRecipient binderDied remoteInterface != null ,return");
                return;
            }
            remoteInterface.asBinder().unlinkToDeath(mDeathRecipient,0);
            remoteInterface = null;
        }
    };
    public void registerListener(IAYExamListener iayExamListener) {
        this.mCallback = iayExamListener;
    }
    public void add() {
        if (!checkRemoteIsNull()){
            try {
                remoteInterface.add();
            } catch (RemoteException e) {
                e.printStackTrace();
            }
        }
    }
    class MyServiceConn implements ServiceConnection {
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            remoteInterface = IRemoteInterface.Stub.asInterface(service);
            try {
                //设置死亡代理
                service.linkToDeath(mDeathRecipient,0);
                remoteInterface.registListener(RemoteCallback);
            } catch (RemoteException e) {
                e.printStackTrace();
            }
        }
        @Override
        public void onServiceDisconnected(ComponentName name) {
        }
    }
    public void bindRemoteService(Context mContext){
        Intent intent = new Intent(mContext,RemoteService.class);
        conn = new MyServiceConn();
        mContext.bindService(intent,conn, Context.BIND_AUTO_CREATE);
    }
    public void unBindRemoteService(Context mContext){
        if (remoteInterface!=null && remoteInterface.asBinder().isBinderAlive()){
            try {
                remoteInterface.unRegistListener(RemoteCallback);
            } catch (RemoteException e) {
                e.printStackTrace();
            }
        }
        mContext.unbindService(conn);
    }
    /**
     * 远程服务回调通知客户端消息
     */
    IListenerInterface RemoteCallback = new IListenerInterface.Stub(){
        @Override
        public void onMessageArrived(String json) throws RemoteException {
            if (mCallback != null){
                mCallback.callBackMsg(json);
            }
        }
    };
}