hxb
2024-12-27 819940c20dfb8a0c797b3423a3c0a0c67c9fd955
处理后台运行被释放的问题
3个文件已添加
5个文件已修改
145 ■■■■■ 已修改文件
app/build.gradle 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/libs/uniapp-v8-release.aar 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/AndroidManifest.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/aidl/com/hdl/photovoltaic/IUniappAidlInterface.aidl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/services/UniappService.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseAndDeviceFragment.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/uni/BSplashView.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/utils/ProcessManagerUtils.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/build.gradle
@@ -108,6 +108,7 @@
    buildFeatures {
        viewBinding true
        aidl true
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
app/libs/uniapp-v8-release.aar
Binary files differ
app/src/main/AndroidManifest.xml
@@ -74,6 +74,7 @@
        android:label="@string/app_name"
        android:requestLegacyExternalStorage="true"
        android:supportsRtl="true"
        android:persistent="true"
        android:theme="@style/Theme.PhotovoltaicDebug">
        <activity
            android:name=".ui.newC.PowerStationsMoveActivity"
@@ -214,6 +215,15 @@
            android:name="org.eclipse.paho.android.service.MqttService"
            android:exported="false" />
        <service
            android:name=".services.UniappService"
            android:enabled="true"
            android:exported="true">
        <intent-filter>
            <action android:name="UniappService.ACTION" />
        </intent-filter>
        </service>
        <meta-data
            android:name="design_height_in_dp"
            android:value="812" />
@@ -224,5 +234,7 @@
            android:name="ScopedStorage"
            android:value="true" />
    </application>
    <queries>
        <package android:name="com.hdl.photovoltaic.services"/>
    </queries>
</manifest>
app/src/main/aidl/com/hdl/photovoltaic/IUniappAidlInterface.aidl
New file
@@ -0,0 +1,8 @@
// IUniappAidlInterface.aidl
package com.hdl.photovoltaic;
// Declare any non-default types here with import statements
interface IUniappAidlInterface {
    void sendMsg(String s);
}
app/src/main/java/com/hdl/photovoltaic/services/UniappService.java
New file
@@ -0,0 +1,49 @@
package com.hdl.photovoltaic.services;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import com.hdl.photovoltaic.IUniappAidlInterface;
import com.hdl.sdk.link.common.utils.LogUtils;
/**
 * Created by hxb on 2024/12/27.
 */
public class UniappService extends Service {
    private static final String TAG = "UniappService";
    public UniappService() {
    }
    IUniappAidlInterface.Stub mIBinder=new IUniappAidlInterface.Stub() {
        @Override
        public void sendMsg(String mes)  {
            LogUtils.i(TAG,"收到请求数据:" + mes);
        }
    };
    @Override
    public IBinder onBind(Intent intent) {
        LogUtils.i(TAG,"onBind: intent = "+intent.toString());
        return mIBinder;
    }
    @Override
    public boolean onUnbind(Intent intent) {
        LogUtils.i(TAG,"onUnbind");
        return super.onUnbind(intent);
    }
    @Override
    public void onDestroy() {
        LogUtils.i(TAG,"onDestroy");
        super.onDestroy();
    }
}
app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseAndDeviceFragment.java
@@ -5,6 +5,7 @@
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.view.Window;
import android.widget.ImageView;
@@ -46,6 +47,7 @@
import com.hdl.photovoltaic.ui.bean.StatusOverviewBean;
import com.hdl.photovoltaic.uni.HDLUniMP;
import com.hdl.photovoltaic.utils.PermissionUtils;
import com.hdl.photovoltaic.utils.ProcessManagerUtils;
import com.hdl.photovoltaic.utils.URLEncodingUtils;
import com.hdl.photovoltaic.widget.DefaultFilteringDialog;
import com.hdl.photovoltaic.widget.DelayedConfirmationCancelDialog;
@@ -281,7 +283,6 @@
                HdlResidenceLogic.getInstance().switchHouse(houseIdBean, true);
                String path = HDLUniMP.UNI_EVENT_OPEN_HOME_DETAILS + "?homeId=" + houseIdBean.getHomeId() + "&homeName=" + houseIdBean.getHomeName() + "&powerStationStatus=" + houseIdBean.getPowerStationStatus();
                HdlUniLogic.getInstance().openUniMP(path, null);
            }
            @Override
app/src/main/java/com/hdl/photovoltaic/uni/BSplashView.java
@@ -1,15 +1,24 @@
package com.hdl.photovoltaic.uni;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.IBinder;
import android.os.SystemClock;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.hdl.photovoltaic.HDLApp;
import com.hdl.photovoltaic.IUniappAidlInterface;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.utils.ProcessManagerUtils;
import java.lang.ref.WeakReference;
import io.dcloud.feature.sdk.Interface.IDCUniMPAppSplashView;
@@ -37,9 +46,43 @@
            }
        } catch (Exception ignored) {
        }
        //只能通过这种方式调用
        Intent intent = new Intent();
        intent.setPackage("com.hdl.photovoltaic");
        intent.setAction("UniappService.ACTION");
        context.bindService(intent, stringservice, Context.BIND_AUTO_CREATE);
        return splashView;
    }
    static ServiceConnection stringservice = new ServiceConnection() {
        private WeakReference<Context> contextWeakReference;
        @Override
        public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
            IUniappAidlInterface iUniappAidlInterface = IUniappAidlInterface.Stub.asInterface(iBinder);
            try {
                iUniappAidlInterface.sendMsg("建立连接");
            } catch (Exception e) {
            }
        }
        @Override
        public void onServiceDisconnected(ComponentName componentName) {
            Log.i("BSplashView", "连接已断开");
            Context context = contextWeakReference.get();
            ProcessManagerUtils.killAllProcess(contextWeakReference.get());
        }
        public void setContextWeakReference(WeakReference<Context> contextWeakReference) {
            this.contextWeakReference = contextWeakReference;
        }
    };
    @Override
    public void onCloseSplash(ViewGroup rootView) {
        if (rootView != null)
app/src/main/java/com/hdl/photovoltaic/utils/ProcessManagerUtils.java
New file
@@ -0,0 +1,27 @@
package com.hdl.photovoltaic.utils;
import android.app.ActivityManager;
import android.content.Context;
import java.util.List;
/**
 * Created by hxb on 2024/12/27.
 */
public class ProcessManagerUtils {
    //删除当前应用所有进程
    public static void killAllProcess(Context context) {
        if(context==null){
            return;
        }
        final ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningAppProcessInfo> procList = am.getRunningAppProcesses();
        for (ActivityManager.RunningAppProcessInfo proc : procList) {
            if (proc.processName != null && proc.processName.startsWith(context.getPackageName())) {
                android.os.Process.killProcess(proc.pid);
                break;
            }
        }
    }
}