编辑
我的Android应用需要改进的地方
本文访问次数:0
  1. 1. 引入第三方库后要立刻测试
  2. 2. 采用更安全的方式打开Activity
  3. 3. 采用更安全的方式执行fragment transaction

最近项目快要完事了,总结一下需要改进的地方

引入第三方库后要立刻测试

不管是直接导入jar文件,还是通过gradle添加的依赖,一定要打包release版本进行测试。另外建议每隔一段时间就打包release版本进行测试,否则最后项目完成了才发现混淆代码导致的各种问题就太晚了。

采用更安全的方式打开Activity

Android官方文档介绍道

Here’s a complete example that shows how to create an intent to view a map, verify that an app exists to handle the intent, then start it:


代码如下

// Build the intent
Uri location = Uri.parse("geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+California");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, location);

// Verify it resolves
PackageManager packageManager = getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(mapIntent, 0);
boolean isIntentSafe = activities.size() > 0;

// Start an activity if it's safe
if (isIntentSafe) {
    startActivity(mapIntent);
}

采用更安全的方式执行fragment transaction

如果在onSaveInstanceState()之后调用了FragmentTransaction#commit(),Android应用会抛出java.lang.IllegalStateException异常。onSaveInstanceState()的调用时机如下表所示:

Honeycomb之前 Honeycomb之后
onSaveInstanceState()调用时机 onPause()之前 onStop()之前

而对于android support library来说,FragmentTransaction#commit()的调用时机的影响如下表所示

Honeycomb之前 Honeycomb之后
onPause()之前调用commit() 正常 正常
onPause()之后,onStop()之前调用commit() 状态丢失 正常
onStop()之后调用commit() 抛出异常 抛出异常

执行commit()的最好时机分别为onCreate()onResumeFragments()onPostResume()方法。

没有任何评论