android data service开发过程常用的抓取log的命令

//获取main log
adb shell logcat -v time > logcat.txt

//获取radio log, anroid telephony的log都在这里面,数据连接建立,释放,失败原因等详细流程都在
//radio log可以找到
adb shell logcat -v time -b radio > logcat_radio.txt

//打印内核的信息
adb shell cat /proc/kmsg > dmsg.txt

//打印输出events log,并详细显示日期、时间、优先级、标签遗迹PID TID线程发出的消息
adb shell logcat -v threadtime -b events > logcat_events.txt

//打印输出各类信息,比如进程信息,内存信息,进程是否异常,kernnel的log等
adb shell dumpstate > dumps.txt

//打印输出ipv4地址
adb shell ip addr show > addr.txt

//打印输出显示ipv4路由规则
adb shell ip rule show > ip_rules_success.txt

//打印输出ipv4主路由表信息
adb shell ip route show > linux_route4.txt

//打印输出ipv4全部路由表信息
adb shell ip route show table all > linux_route4_all.txt

//打印输出ipv6地址
adb shell ip -6 addr show > addr.txt

//打印输出ipv6路由规则
adb shell ip -6 rule show > ipv6_routerule.txt

//打印输出ipv6主路由表信息
adb shell ip -6 route show > linux_route6.txt

//打印输出ipv6全部路由表信息
adb shell ip -6 route show table all > linux_route6_all.txt

//查看本机是否具有ipv4数据包转发功能(0:没有,1:具有)
adb shell cat /proc/sys/net/ipv4/ip_forward > ip_forward.txt

//查看本机是否具有ipv6数据包转发功能(0:没有,1:具有)
adb shell cat /proc/sys/net/ipv6/conf/all/forwarding > forwarding.txt

//查看ndp是否可用
adb shell cat /proc/sys/net/ipv6/conf/all/proxy_ndp > proxy_ndp.txt

//查看本机的网卡信息
adb shell busybox ifconfig > ifconfig.txt

//打印输出网络端口rmnet0的tcpdump log, 可以使用wireshark来分析该log
adb shell tcpdump -i rmnet0 -s 0 -w /data/tcpdump_rmnet0.pcap > tcpdump_rmnet0.pcap

//打印输出所有tcpdump log, 可以使用wireshark来分析该log
adb shell tcpdump -i any -s 0 -w /data/tcpdump.pcap >tcpdump.pcap

为了优化Android设备在打开其他APK时Service被冻结导致数据抓取丢失的问题,可以采取以下措施: 1. **提高Service优先级**: - 使用`START_STICKY`或`START_REDELIVER_INTENT`来确保Service在被系统杀死后能够重新启动。 - 示例代码已经在`onStartCommand`方法中实现: ```java @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.e("zsq", "onStartCommand"); // 创建一个Notification对象 Notification notification = createNotification(); // 将Service设置为前台服务 startForeground(NOTIFICATION_ID, notification); // 处理服务启动时的逻辑 return START_STICKY; // START_STICKY 用于确保服务被系统回收后会自动重新启动 } ``` 2. **使用前台Service**: -Service设置为前台Service,这样可以减少被系统杀死的风险。 - 示例代码已经在`onStartCommand`方法中实现: ```java Notification notification = createNotification(); startForeground(NOTIFICATION_ID, notification); ``` 3. **优化数据保存机制**: - 定期将数据保存到持久化存储(如文件或数据库),而不是依赖于内存中的临时数据- 可以在`runnable`中增加数据保存的频率,例如每分钟保存一次: ```java handler.postDelayed(runnable, 60000); // 每60秒保存一次 ``` 4. **处理低内存情况**: - 重写`onLowMemory`和`onTrimMemory`方法,在这些情况下及时保存数据并释放资源。 ```java @Override public void onLowMemory() { super.onLowMemory(); Log.e("zsq", "onLowMemory "); // 保存当前数据 if (data != null) { saveSingleDataToExcel(data); } } @Override public void onTrimMemory(int level) { super.onTrimMemory(level); Log.e("zsq", "onTrimMemory "); // 保存当前数据 if (data != null) { saveSingleDataToExcel(data); } } ``` 5. **使用JobScheduler或WorkManager**: - 考虑使用`JobScheduler`或`WorkManager`来替代自定义的`Service`,这些组件提供了更强大的后台任务管理能力,并且更好地适应了Android系统的限制。 ```java WorkRequest workRequest = new OneTimeWorkRequest.Builder(MyWorker.class) .setInitialDelay(1, TimeUnit.MINUTES) .build(); WorkManager.getInstance().enqueue(workRequest); ``` 通过以上措施,可以有效减少Service被冻结的情况,并确保数据在重启后不会丢失。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值