LinuxFans 发表于 2013-2-7 09:40:36

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]
查看完整版本: android小技巧