Skip to content

Commit

Permalink
优化资源释放
Browse files Browse the repository at this point in the history
  • Loading branch information
lalakii committed Dec 8, 2024
1 parent f7024c3 commit 50fe7ac
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 29 deletions.
2 changes: 1 addition & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ android {
//noinspection EditedTargetSdkVersion
targetSdk 35
versionCode 2
versionName "2.0"
versionName "2.1"
}
buildFeatures {
aidl true
Expand Down
5 changes: 2 additions & 3 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<application
android:icon="@android:drawable/sym_def_app_icon"
android:label="@string/app_name"
android:largeHeap="true"
android:theme="@android:style/Theme.Material.NoActionBar">

<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleInstance">

<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
Expand Down
12 changes: 11 additions & 1 deletion app/src/main/java/cn/lalaki/touch_event/GetEventService.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
package cn.lalaki.touch_event;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;

public class GetEventService extends IGetEventService.Stub implements Runnable {
private boolean isServiceRunning = true;
private final ProcessBuilder builder = new ProcessBuilder();
private boolean isServiceRunning = true;
private int port;
private int errCount;

@Override
public void destroy() {
Expand Down Expand Up @@ -41,6 +43,14 @@ public void run() {
}
}
} catch (IOException | InterruptedException ignored) {
try {
Thread.sleep(1000);
} catch (InterruptedException ignored1) {
}
errCount++;
if (errCount > 15) {
isServiceRunning = false;
}
}
}
}
Expand Down
44 changes: 24 additions & 20 deletions app/src/main/java/cn/lalaki/touch_event/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,16 +53,14 @@ public void onRequestPermissionResult(int requestCode, int grantResult) {

@Override
protected void onResume() {
if (shizukuIntent != null) {
if (Shizuku.pingBinder()) {
permissionIsGranted = Shizuku.checkSelfPermission() == PackageManager.PERMISSION_GRANTED;
if (permissionIsGranted) {
findViewById(R.id.tips).setAlpha(0F);
Shizuku.removeRequestPermissionResultListener(this);
} else {
Shizuku.addRequestPermissionResultListener(this);
Shizuku.requestPermission(0);
}
if (shizukuIntent != null && Shizuku.pingBinder()) {
permissionIsGranted = Shizuku.checkSelfPermission() == PackageManager.PERMISSION_GRANTED;
if (permissionIsGranted) {
findViewById(R.id.tips).setAlpha(0F);
Shizuku.removeRequestPermissionResultListener(this);
} else {
Shizuku.addRequestPermissionResultListener(this);
Shizuku.requestPermission(0);
}
}
super.onResume();
Expand All @@ -77,29 +75,34 @@ public void onClick(View view) {
}
if (!permissionIsGranted) return;
isRunning = true;
new Thread(this).start();
Shizuku.bindUserService(mUserServiceArgs, this);
bindService();
((Button) view).setText(R.string.stop);
Toast.makeText(this, R.string.touch_tips, Toast.LENGTH_SHORT).show();
}

// 绑定服务
private void bindService() {
new Thread(this).start();// Socket服务端
Shizuku.bindUserService(mUserServiceArgs, this);
}

// 进程间通信,如果不理解此处为什么要用到socket,请百度
@Override
public void run() {
try (ServerSocket server = new ServerSocket(port)) {
while (isRunning) {
BufferedReader reader = new BufferedReader(new InputStreamReader(server.accept().getInputStream()));
BufferedReader br = new BufferedReader(new InputStreamReader(server.accept().getInputStream()));
StringBuilder sb = new StringBuilder();
while (isRunning) {
String line = reader.readLine();
String line = br.readLine();
sb.append(line).append('\n');
if (sb.length() > 4096) {
sb.delete(0, 1024);
runOnUiThread(() -> {
showData.setText(sb);
sc.fullScroll(View.FOCUS_DOWN);
});
while (isRunning && sb.length() > 4096) {
sb.delete(0, 1);
}
runOnUiThread(() -> {
showData.setText(sb);
sc.fullScroll(View.FOCUS_DOWN);
});
Log.d(getPackageName(), line);
}
}
Expand Down Expand Up @@ -128,5 +131,6 @@ protected void onDestroy() {

@Override
public void onServiceDisconnected(ComponentName name) {
isRunning = false;
}
}
2 changes: 1 addition & 1 deletion app/src/main/res/layout/main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
android:minHeight="48dp"
android:onClick="onClick"
android:text="@string/start"
android:textSize="22sp"
android:textSize="18sp"
tools:ignore="RelativeOverlap" />
</RelativeLayout>

Expand Down
6 changes: 3 additions & 3 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<resources>
<string name="app_name">get_event</string>
<string name="start">开始监听</string>
<string name="start">启动服务</string>
<string name="need_permission">需要安装或激活Shizuku、并授予相应权限</string>
<string name="touch_tips">此时在屏幕任意位置触摸可查看事件</string>
<string name="end">退出程序</string>
<string name="stop">停止</string>
<string name="end">程序结束</string>
<string name="stop">安全停止服务</string>
</resources>

0 comments on commit 50fe7ac

Please sign in to comment.