您的位置:首页 > 其它

技巧

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-with
incoming references)

6.查看程序线程运行到哪里?

步骤:Devices--选择程序线程--选择(Update Threads)图标--运行程序-----查看程序线程运行情况

7.查看程序每一个方法运行所用的时间,用于优化

步骤:Devices--选择程序线程--选择(Start Method Profiling)图标---运行程序-----查看

8.查看程序View结构树

工具:hierarchyviewer.bat
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: