当前位置: 代码迷 >> Android >> android小技艺
  详细解决方案

android小技艺

热度:22   发布时间:2016-05-01 15:47:09.0
android小技巧

好久没有更新blog了,今天那就即兴写点。

退出软件

我们知道android是多任务的系统,当多个Activity相互跳转的时候,这个时候在每个Activity都有退出出口的话,怎么真正退出就成为了一个小小的问题,在网上很多资料都说,个人觉得都是没有真正解决问题的实质。

先爆料一下网上的,杀死进程的方式:

1android.os.Process.killProcess(android.os.Process.myPid());

2System.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);

试过了你就会发现,其实也没有真正实现想要的效果。

这里用一个简单的方式,就是逐级退出,只要重载ActivityonResume()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,? 将地步反编译好的jarjava反编译工具再反编译为classok了,要是apk在打包之前没有混淆的话,反编译的效果很多,包结构很清晰,目前市面上好的软件基本都可以反编译哦。

?

  相关解决方案