android小技巧
好久没有更新blog了,今天那就即兴写点。退出软件
我们知道android是多任务的系统,当多个Activity相互跳转的时候,这个时候在每个Activity都有退出出口的话,怎么真正退出就成为了一个小小的问题,在网上很多资料都说,个人觉得都是没有真正解决问题的实质。
先爆料一下网上的,杀死进程的方式:
1,android.os.Process.killProcess(android.os.Process.myPid());
2,System.exit(0);
3,
private void killProcess(Context mAct) {
Log.i(TAG, "killProcess");
String packageName = mAct.getPackageName();
String processId = "";
try {
Runtime r = Runtime.getRuntime();
Process p = r.exec("ps");
BufferedReader br = new BufferedReader(new InputStreamReader(p
.getInputStream()));
String inline;
while ((inline = br.readLine()) != null) {
if (inline.contains(packageName)) {
Log.i(TAG, "" + inline);
break;
}
}
br.close();
StringTokenizer processInfoTokenizer = new StringTokenizer(inline);
int count = 0;
while (processInfoTokenizer.hasMoreTokens()) {
count++;
processId = processInfoTokenizer.nextToken();
if (count == 2) {
break;
}
}
Log.e(TAG, "kill process : " + processId);
r.exec("kill -15 " + processId);
} catch (IOException ex) {
Log.e(TAG, "" + ex.getStackTrace());
}
}
4,直接返回Home界面
Intent home = new Intent(Intent.ACTION_MAIN);
home.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
home.addCategory(Intent.CATEGORY_HOME);
startActivity(home);
试过了你就会发现,其实也没有真正实现想要的效果。
这里用一个简单的方式,就是逐级退出,只要重载Activity的onResume()就ok了。
示例:
@Override
protected void onResume() {
super.onResume();
if(mExiting){
finish();
}
}
反编译
很早之前看过牛人写的关于反编译apk的方法,太过于复杂,现在有简单的了,这里顺便提一下。
准备工具:
dex2jar
jd-gui
步骤:
1, 下载上面提到两个小软件,网上到处都有。
2, 将apk后缀名改为压缩软件识别的后缀,例如zip
3, 解压改后缀名后的软件包
4, 在dos界面进入准备好的工具dex2jar目录,运行dex2ja class.dex
5, 将地步反编译好的jar用java反编译工具再反编译为class就ok了,要是apk在打包之前没有混淆的话,反编译的效果很多,包结构很清晰,目前市面上好的软件基本都可以反编译哦。
页:
[1]