目录
目录
浅谈Android手机cpu架构适配_安卓开发-顺的博客-CSDN博客_安卓手机cpu架构
机顶盒的启动Activity SplashActivity 断电重启会被启动两次怎么办?
利用ARouter模拟startActivityForResult的方式并且带参数进行跳转 比如跳转到登录页面
点击返回键实现类似Home键的效果 回来后不加载splash页面
全屏底部弹出对话框 主要是加载这个style 这个style在 EasyCommonUtils框架中
基于OK+Retrofit+Rxjava封装好的网络框架 如果获取原始json
通过查看方法调用链(Android Studio: alt + ctrl + H)
ADB命令
一、adb启动Activity:
adb shell am start -n {包(package)名}/{包名}.{活动(activity)名称}
如:启动浏览器
adb shell am start -n com.android.browser/com.android.browser.BrowserActivity
二、adb关闭Activity:
adb shell am force-stop {包(package)名}
如:关闭浏览器
adb shell am force-stop com.android.browser
三、adb启动service:
adb shell am startservice -n {包(package)名}/{包名}.{服务(service)名称}
如:启动自己应用中一个service
adb shell am startservice -n com.android.traffic/com.android.traffic.maniservice
四、adb发送broadcast:
adb shell am broadcast -a <广播动作>
如:发送一个网络变化的广播
adb shell am broadcast -a android.net.conn.CONNECTIVITY_CHANGE
五、adb 获取权限命令
1、adb shell --- su --- mount -o remount,rw /system
2、adb shell -- adb remount --mount -o remount /system ---- chmod 777 system --- cd system --- chmod 777 app
3、echo 1 > /sys/class/remount/need_remount ------- mount -o remount /system
六、查看系统属性、设置系统属性
1、adb shell
2、getprop
3、setprop xxx value
七、adb查看任意页面包名类名
adb shell -> dumpsys activity top |grep Activity
八、adb截图
(1)adb shell screencap -p /sdcard/screen.png
(2)adb pull /sdcard/screen.png D:/KDR
九、adb 操作指定设备
adb -s 设备id xxx
十、查看activity栈信息
所有app
adb shell dumpsys activity
当前APP
adb shell dumpsys activity | grep com.xxx.xxx
十一、通过adb命令查看当前设备分配给一个进程的内存是多少
adb shell
getprop dalvik.vm.heapsize
AS、编译相关
1、在AS中执行命令 对指定module进行打包
gradlew muduleName: assembleRelease
2、打包时默认用名称和时间命名
app的build.gradle 最外层
def releaseTime() {
return new Date().format("yyyyMMddHHmm", TimeZone.getTimeZone("GMT+8"))
}
然后android{}里面写上
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "app-${releaseTime()}.apk"
}
}
其他
-
关于cpu架构
-
浅谈Android手机cpu架构适配_安卓开发-顺的博客-CSDN博客_安卓手机cpu架构
查询手机cpu命令行:adb shell getprop ro.product.cpu.abi -
代码动态设置文件读写权限
-
String command = "chmod 644 /data/data/com.xxx.xxx/cache/tmp.ts"; Runtime runtime = Runtime.getRuntime(); runtime.exec(command);
-
-
机顶盒的启动Activity SplashActivity 断电重启会被启动两次怎么办?
- 设置启动模式 android:launchMode="singleInstance"
-
git 查看远程仓库地址命令
- $git remote -v
-
编译报错查看更多信息
-
Error:Execution failed for task ':test:processDebugManifest'.> Manifest merger failed with multiple errors, see logs
但是要命的是,除了这个log,没有什么其他的有用信息了,怎么办?处理方式是这样的:
首先进入命令行,输入命令gradlew processDebugManifest --stacktrace
其中,processDebugManifest是log里面提到的,这个命令是会了获取更多的log信息。
-
-
利用ARouter模拟startActivityForResult的方式并且带参数进行跳转 比如跳转到登录页面
ARouter.getInstance().build("/test/login")
.withString("key1", "FILM")
.navigation(getActivity(), 100);这里100是requestCode 必须大于0 否则不生效。
目标页面finish之前 调用setResult(resultCode,intent) 这里的resultCode 可以定义几个数 代表不同的意思 比如:
resultCode 200 登录成功
resultCode 400 用户取消登录(点击了返回键)
resultCode 401 登录失败
-
点击返回键实现类似Home键的效果 回来后不加载splash页面
-
这个方法在EasyCommonUtils框架中 的APPUtil中有
/** * 去桌面 * * @param activity */ public static void goToDesktop(Activity activity) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_MAIN); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //如果是服务里调用,必须加入new task标识 intent.addCategory(Intent.CATEGORY_HOME); activity.startActivity(intent); }
-
-
两次点击返回退出 app
-
private long exitTime; if ((System.currentTimeMillis() - exitTime) > 2000) { Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show(); exitTime = System.currentTimeMillis(); } else { finish(); System.exit(0); }
-
-
监听连续多次点击
-
private final int COUNTS = 3;// 点击次数 private final long DURATION = 1000;// 规定有效时间 long[] mHits = new long[COUNTS]; /** * 连续点击多次 弹出隐藏对话框 */ private void continuousClick() { //每次点击时,数组向前移动一位 System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1); //为数组最后一位赋值 mHits[mHits.length - 1] = SystemClock.uptimeMillis(); if (mHits[0] >= (SystemClock.uptimeMillis() - DURATION)) { mHits = new long[COUNTS];//重新初始化数组 Toast.makeText(this, "进入配置页面", Toast.LENGTH_LONG).show(); ConfigDialog dialog = new ConfigDialog(this, true); dialog.show(); } }
-
-
全屏底部弹出对话框 主要是加载这个style 这个style在 EasyCommonUtils框架中
-
super(context, R.style.ActionSheetDialogStyle); 然后执行下面代码 WindowManager.LayoutParams params = getWindow().getAttributes(); params.width = WindowManager.LayoutParams.MATCH_PARENT; params.height = WindowManager.LayoutParams.MATCH_PARENT;
getWindow().setAttributes(params);getWindow().setGravity(Gravity.BOTTOM);
-
-
点击复制文本到剪切板
-
//获取剪贴板管理器: ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); // 创建普通字符型ClipData ClipData mClipData = ClipData.newPlainText("Label", mine_apprentice_detail_code_tv.getText().toString()); // 将ClipData内容放到系统剪贴板里。 cm.setPrimaryClip(mClipData);
-
-
发送图片时,打开系统自带的文件系统选择图片
-
Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); intent.addCategory(Intent.CATEGORY_OPENABLE); startActivityForResult(intent,1);
-
如果是发送文件 这里就改为 intent.setType("*/*");
效果图:
-
-
解析apk包名等信息
-
使用aapt工具
-
在Android sdk中的\android-sdk-windows\build-tools\26.0.2(任意一个)文件下有个aapt工具,进入目录,输入命令 aapt d badging apk路径,
即可解析得到Apk信息(包名,版本名,版本号,安装位置,sdksdkVersion,targitSdkVersion,所需权限等)。
-
-
基于OK+Retrofit+Rxjava封装好的网络框架 如果获取原始json
-
返回值直接用ResponseBody接收就可以了
-
Observable<ResponseBody> xxx(......)
-
-
通过查看方法调用链(Android Studio: alt + ctrl + H)