1.在开发中用到了编辑好了日志后返回到上一页 上一页要刷新列表的需求 这个可以使用onactivityresult来实现 以前好像用过onresume来实现 这不是很好
首先是设置一个监听
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==200){
startindex = 1;
fillData();
if(requestCode==NEW_NOTE){
showToast("发表新日记成功,正在刷新页面");
}else if(requestCode==EDIT_NOTE){
showToast("更新日记成功,正在刷新页面");
}
}
}
然后在编辑activity中:
setResult(200);//设置返回码
finish();
新知识: 覆写崩溃的对话框 qq不会弹出崩溃对话框就是这么做的
需要实现一个handler 程序报错后会打印报错信息
package cn.itcast.crash;
import java.io.ByteArrayOutputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
import java.lang.Thread.UncaughtExceptionHandler;
import java.lang.reflect.Field;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Build;
public class MyCrashHandler implements UncaughtExceptionHandler {
// 保证MyCrashHandler只有一个实例
// 2.提供一个静态的程序变量
private static MyCrashHandler myCrashHandler;
private Context context;
// 1.私有化构造方法
private MyCrashHandler() {
}
// 3.暴露出来一个静态的方法 获取myCrashHandler
public static synchronized MyCrashHandler getInstance() {
if (myCrashHandler == null) {
myCrashHandler = new MyCrashHandler();
}
return myCrashHandler;
}
public void init(Context context) {
this.context = context;
}
// 程序发生异常的时候调用的方法
// try catch
@Override
public void uncaughtException(Thread thread, Throwable ex) {
System.out.println("出现错误啦 哈哈");
StringBuilder sb = new StringBuilder();
// 1.获取当前应用程序的版本号.
PackageManager pm = context.getPackageManager();
try {
PackageInfo packinfo = pm.getPackageInfo(context.getPackageName(),
0);
sb.append("程序的版本号为" + packinfo.versionName);
sb.append("\n");
// 2.获取手机的硬件信息.
Field[] fields = Build.class.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
// 暴力反射,获取私有的字段信息
fields[i].setAccessible(true);
String name = fields[i].getName();
sb.append(name + " = ");
String value = fields[i].get(null).toString();
sb.append(value);
sb.append("\n");
}
// 3.获取程序错误的堆栈信息 .
StringWriter writer = new StringWriter();
PrintWriter printWriter = new PrintWriter(writer);
ex.printStackTrace(printWriter);
String result = writer.toString();
sb.append(result);
System.out.println(sb.toString());
// 4.把错误信息 提交到服务器
} catch (Exception e) {
e.printStackTrace();
}
// 完成自杀的操作
android.os.Process.killProcess(android.os.Process.myPid());
}
}
然后是myapp的代码
package cn.itcast.crash;
import android.app.Application;
public class MyApp extends Application {
//在整个应用第一次被创建出来的时候 执行
// 在应用程序对应的进程 第一次创建出来的时候执行
@Override
public void onCreate() {
super.onCreate();
//把自定义的异常处理类设置 给主线程
MyCrashHandler myCrashHandler = MyCrashHandler.getInstance();
myCrashHandler.init(getApplicationContext());
Thread.currentThread().setUncaughtExceptionHandler(myCrashHandler);
}
}
主要在清单中标注这个app
<application
android:name="MyApp"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".CrashActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
软件工程方面知识:在开发过程中会先开发java项目 或者testcase项目,用来测试接口等工作 等测试完成后在运用到应用中,当然我也是这么做的