Archive for January, 2016

作者:AngryFox 分类: Uncategorized January 17th, 2016 暂无评论

@echo On
@Rem 删除SVN版本控制目录
@PROMPT [Com]

@for /r . %%a in (.) do @if exist “%%a/.svn” rd /s /q “%%a/.svn”
@Rem for /r . %%a in (.) do @if exist “%%a/.svn” @echo “%%a/.svn”

@echo Mission Completed.
@pause

@echo On
@Rem 删除CVS版本控制目录
@PROMPT [Com]#

@for /r . %%a in (.) do @if exist “%%a/CVS” rd /s /q “%%a/CVS”
@Rem for /r . %%a in (.) do @if exist “%%a/CVS” @echo “%%a/CVS”

@echo Mission Completed.
@pause

@echo On
@Rem 删除git版本控制目录
@PROMPT [Com]

@for /r . %%a in (.) do @if exist “%%a/.git” rd /s /q “%%a/.git”
@Rem for /r . %%a in (.) do @if exist “%%a/.git” @echo “%%a/.git”

@echo Mission Completed.
@pause

作者:AngryFox 分类: Uncategorized January 17th, 2016 暂无评论

1.真机调试target unknown解决方法

任务管理器关闭 adb.exe 然后在开发者选项 重新开启调试模式

2.项目导入到eclipse中运行出错Conversion to Dalvik format failed with error 1

在D:\BaiduYunDownload\adt-bundle-windows-x86_64-20140702\sdk\tools\proguard\bin中的文件最后一行换成后面这句
::java -jar “%PROGUARD_HOME%”\lib\proguard.jar %*
java -jar “%PROGUARD_HOME%”\lib\retrace.jar %1 %2 %3 %4 %5 %6 %7 %8 %9

3.

01-17 23:18:38.926: E/AndroidRuntime(21172): FATAL EXCEPTION: main
01-17 23:18:38.926: E/AndroidRuntime(21172): java.lang.RuntimeException: Unable to instantiate application com.jfw.app.JFWApplication: java.lang.ClassNotFoundException: Didn't find class "com.jfw.app.JFWApplication" on path: DexPathList[[zip file "/data/app/com.jfw-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.jfw-1, /vendor/lib, /system/lib]]
01-17 23:18:38.926: E/AndroidRuntime(21172): 	at android.app.LoadedApk.makeApplication(LoadedApk.java:504)
01-17 23:18:38.926: E/AndroidRuntime(21172): 	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4673)
01-17 23:18:38.926: E/AndroidRuntime(21172): 	at android.app.ActivityThread.access$1300(ActivityThread.java:169)
01-17 23:18:38.926: E/AndroidRuntime(21172): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1440)
01-17 23:18:38.926: E/AndroidRuntime(21172): 	at android.os.Handler.dispatchMessage(Handler.java:107)
01-17 23:18:38.926: E/AndroidRuntime(21172): 	at android.os.Looper.loop(Looper.java:194)
01-17 23:18:38.926: E/AndroidRuntime(21172): 	at android.app.ActivityThread.main(ActivityThread.java:5463)
01-17 23:18:38.926: E/AndroidRuntime(21172): 	at java.lang.reflect.Method.invokeNative(Native Method)
01-17 23:18:38.926: E/AndroidRuntime(21172): 	at java.lang.reflect.Method.invoke(Method.java:525)
01-17 23:18:38.926: E/AndroidRuntime(21172): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:854)
01-17 23:18:38.926: E/AndroidRuntime(21172): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:621)
01-17 23:18:38.926: E/AndroidRuntime(21172): 	at dalvik.system.NativeStart.main(Native Method)
01-17 23:18:38.926: E/AndroidRuntime(21172): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.jfw.app.JFWApplication" on path: DexPathList[[zip file "/data/app/com.jfw-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.jfw-1, /vendor/lib, /system/lib]]
01-17 23:18:38.926: E/AndroidRuntime(21172): 	at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
01-17 23:18:38.926: E/AndroidRuntime(21172): 	at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
01-17 23:18:38.926: E/AndroidRuntime(21172): 	at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
01-17 23:18:38.926: E/AndroidRuntime(21172): 	at android.app.Instrumentation.newApplication(Instrumentation.java:1038)
01-17 23:18:38.926: E/AndroidRuntime(21172): 	at android.app.LoadedApk.makeApplication(LoadedApk.java:499)
01-17 23:18:38.926: E/AndroidRuntime(21172): 	... 11 more

检查报错文件名是否正确,导出包时漏掉
1、启动activity的时候,在AndroidManifest.xml 可能压根你就忘了添加一个activity,或者说activity的包名或者名字写错了,这个犯错几率很高的
2、你的使用的class,是一个外部的JAR包,当在工程中编译使用时,发布成APK并没有包含JAR文件,所以APK在执行的时候就找不到JAR文件,会报错。
所以一定在“Order and Export”里,勾选使用的jar包。切记!

作者:AngryFox 分类: Uncategorized January 15th, 2016 暂无评论

Intent.FLAG_ACTIVITY_CLEAR_TOP用法

可以利用清理历史栈的方法,来巧妙关闭所有activity,首先用一个设置为不可见的activity A来启动程序,这个activity A的作用只是用来垫栈底,只有启动和退出程序才会用到这个activity,而你需要退出的时候,只需要跳转至这个activity A ,并让A finish自己就可以实现关闭所有的activity。
[/html] view plaincopy在CODE上查看代码片派生到我的代码片
Intent intent = new Intent();
intent.setClass(B.this, A.class); //B为你按退出按钮所在的activity
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //最关键是这句
startActivity(intent);
Intent.FLAG_ACTIVITY_CLEAR_TOP使得处于栈底的A发挥推土机的作用,从最底层把栈里所有的activity都清理掉,再在自己的oncreate方法加一句finish结束自己,即可实现退出。不放心的话,可以在A的ondestroy方法中加上system.exit(0) ,连跳转过程中的线程也可以终止的。

当点击back键时,程序调用了onDestroy方法,程序退出了,但是我们查看其进程,发现调用了onDestroy方法之后这个Activity还在运行。甚至调用了finish()方法之后程序还能在进程中看到。通过下面这种方式可以实现程序的完全退出:
Intent intent = new Intent();
Intent.setClass(context,MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra(“flag”,EXIT_APPLICATION);
context.startActivity(intnet);

何实现所有Activity全部销毁

在Android中,如果想退出Android程序,一般都是调用finish()、System.exit(0)、android.os.Process.killProcess(android.os.Process.myPid())等方法来实现退出程序功能,可是在实际开发中,并不能达到完全退出应用程序的效果,这是因为调用finish()、System.exit(0)、android.os.Process.killProcess(android.os.Process.myPid())只能杀死当前的activity,并不能杀死所有的activity,为了完美达到此效果,接下来通过一个案例实现:

一、使用单例模式创建一个Activity管理对象,该对象中有一个Activity容器(具体实现自己处理,使用LinkedList等)专门负责存储新开启的每一个Activity,并且容易理解、易于操作,非常不错!
MyApplication类(储存每一个Activity,并实现关闭所有Activity的操作

package com.hrtx.dd.activity;

import java.util.LinkedList;
import java.util.List;

import android.app.Activity;
import android.app.Application;

public class MyApplication extends Application {
    private List activitys = null;
    private static MyApplication instance;

    private MyApplication() {
        activitys = new LinkedList();
    }

    /**
     * 单例模式中获取唯一的MyApplication实例
     *
     * @return
     */
    public static MyApplication getInstance() {
        if (null == instance) {
            instance = new MyApplication();
        }
        return instance;

    }

    // 添加Activity到容器中
    public void addActivity(Activity activity) {
        if (activitys != null && activitys.size() > 0) {
            if(!activitys.contains(activity)){
                activitys.add(activity);
            }
        }else{
            activitys.add(activity);
        }

    }

    // 遍历所有Activity并finish
    public void exit() {
        if (activitys != null && activitys.size() > 0) {
            for (Activity activity : activitys) {
                activity.finish();
            }
        }
        System.exit(0);
    }

}

二、在每一个Activity中的onCreate方法里添加该Activity到MyApplication对象实例容器中

MyApplication.getInstance().addActivity(this);
三、在需要结束所有Activity的时候调用exit方法
MyApplication.getInstance().exit();