技巧
2015-12-02 22:12
218 查看
1. 如何退出Activity?如何安全退出已调用多个Activity的Application?
activity以栈的形式退出activity 直接调用 finish () 方法 . //用户点击back键 就是退出一个activity
退出activity 执行 onDestroy()方法 .
(1)、抛异常强制退出:
该方法通过抛异常,使程序Force Close。
验证可以,但是,需要解决的问题是,如何使程序结束掉,而不弹出Force Close的窗口。
//安全结束进程 android.os.Process.killProcess(android.os.Process.myPid());
(2)、记录打开的Activity:---------------常用
ps:代码例子,继承BaseActivity
每打开一个Activity,就记录下来。在需要退出时,关闭每一个Activity即可。
List<Activity> lists ; 在application 全集的环境里面
lists = new ArrayList<Activity>();
lists.add(activity);
for(Activity activity: lists)
{
activity.finish();
}
(3)、发送特定广播:
在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。
//给某个activity 注册接受接受广播的意图
registerReceiver(receiver, filter)
//如果过接受到的是 关闭activity的广播 就调用finish()方法把当前的activity finish()掉
(4)、递归退出
在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。
(5)
可以通过 intent的flag 来实现.. intent.setFlag(FLAG_ACTIVITY_CLEAR_TOP)激活一个新的activity,然后在新的activity的oncreate方法里面 finish掉.
2.横竖屏切换
这个生命周期跟清单文件里的配置有关系(1)、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期
默认首先销毁当前activity,然后重新加载
(2)、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法
游戏开发中, 屏幕的朝向都是写死的.
3.后台Activity被系统回收,被系统回收之前保存当前状态
(1)调用方法存储数据protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putLong("id", 1234567890); }
在下次创建时再获取
public void onCreate(Bundle savedInstanceState) { //判断 savedInstanceState是不是空. //如果不为空就取出来 super.onCreate(savedInstanceState); }
(2)每隔一段时间保存一次数据,方便恢复
4.Serializable接口
所谓的Serializable,就是java提供的通用数据保存和读取的接口。至于从什么地方读出来和保存到哪里去都被隐藏在函数参数的背后了。
这样子,任何类型只要实现了Serializable接口,就可以被保存到文件中,或者作为数据流通过网络发送到别的地方。
也可以用管道来传输到系统的其他程序中。
Object serialization 允许你将实现了Serializable接口的对象转换为字节序列,
这些字节序列可以被完全存储以备以后重新生成原来的对象。
5.分析内存溢出的工具---mat (Eclipse Memory Analyzer)
步骤:程序出现异常报错---选择该程序进程---选择(Dump HPROF file)图标导出文件---执行命令转换格式(C:\Users\lenovo\Desktop\prof>hprof-conv com.example.testmat.hprof convert_com.example.testmmat.hprof)----使用mat打开文件----切换到Histogram视图------查看哪个位置引用(右键-List objects-withincoming references)
6.查看程序线程运行到哪里?
步骤:Devices--选择程序线程--选择(Update Threads)图标--运行程序-----查看程序线程运行情况7.查看程序每一个方法运行所用的时间,用于优化
步骤:Devices--选择程序线程--选择(Start Method Profiling)图标---运行程序-----查看8.查看程序View结构树
工具:hierarchyviewer.bat相关文章推荐
- 使用CefSharp在.Net程序中嵌入Chrome浏览器(一)——简介
- 数据库使用实例
- 数据库连接操作
- HDU2859 Phalanx DP
- C++类的析构函数不能抛出异常
- 地址解析协议(APR)
- 一个蒙文系统设计与实现
- Dinic 算法
- 替换字段中第一个相同字符的方法
- 在C++中,关键字explicit的作用
- 使用js获取QueryString的方法小结
- Thinkphp 学习笔记
- border属性黑科技(已被玩坏)
- 02 第一份实习工作之后的三个月
- python写一个日志查询工具(登录ftp服务器得到日志并分析)
- 设计模式之适配器模式
- Android在一个程序中启动另一个程序(包名、类名)
- 输入三个整数,从小到大的顺序输出(利用指针)
- windows驱动开发相关知识
- myeclipse中的web项目详解