2013-05-10 小结 Android的一些知识点

1.android ANR机制(Application No Responding)

一般是主线程在一定时间内无响应(5s)会引发ANR异常

通常解决办法是在该主线程开一个子线程来处理耗时较长的事物

主线程应该为子线程提供一个Handler,以便完成时能够提交给主线程。以这种方式设计你的应用程序,将能保证你的主线程保持对输入的响应性并能避免由于5秒输入事件的超时引发的ANR对话框。这种做法应该在其它显示UI的线程里效仿,因为它们都受相同的超时影响。

并在页面放置一个progressbar提示进度框。


2.android IPC机制 (Inter-Process communication)

Handler 和AIDL

Handler一般是处理子线程,UI线程为主线程,Handler是配合UI线程来处理数据的

IPC机制主要是通过IBinder接口去实现的,如果希望对象能被其它进程访问,那就必须实现IBinder接口,可以指向本地也可以指向远程(AIDL)

其基本模型是C/S模型


3.横竖切屏时Activity的生命周期

竖屏切换成横屏时:

05-10 05:24:53.910: I/System.out(316): onSaveInstanceState()....
05-10 05:24:53.910: I/System.out(316): onPause()....
05-10 05:24:53.920: I/System.out(316): onStop()....
05-10 05:24:53.920: I/System.out(316): onDestroy()....
05-10 05:24:53.940: I/System.out(316): onCreate()....
05-10 05:24:54.051: I/System.out(316): onStart()....
05-10 05:24:54.090: I/System.out(316): onRestoreInstanceState()....
05-10 05:24:54.090: I/System.out(316): onResume()....

Home键:

05-10 05:30:55.051: I/System.out(353): onSaveInstanceState()....
05-10 05:30:55.051: I/System.out(353): onPause()....
05-10 05:30:55.970: I/System.out(353): onStop()....

重新进入:

05-10 05:31:41.231: I/System.out(353): onRestart()....
05-10 05:31:41.231: I/System.out(353): onStart()....
05-10 05:31:41.241: I/System.out(353): onResume()....

按返回键:

05-10 05:32:09.990: I/System.out(353): onPause()....
05-10 05:32:10.660: I/System.out(353): onStop()....
05-10 05:32:10.660: I/System.out(353): onDestroy()....
重新进入:

05-10 05:32:23.740: I/System.out(353): onCreate()....
05-10 05:32:23.900: I/System.out(353): onStart()....
05-10 05:32:23.930: I/System.out(353): onResume()....

4.Broadcastreceiver

注意的问题:

1)如果是费时操作,最好在onReceive()方法中启动一个线程处理该事件,防止被系统kill

2)启动一个线程仍然有可能被系统判断为不活跃而被kill

解决办法是:启动一个服务去处理

注册方式有两种:

4.1 代码注册

receiver = new KalusReceiver();
        IntentFilter filter = new IntentFilter(KalusReceiver.FILTER);
        registerReceiver(receiver, filter);

一般在onStart中注册在onStop中去注销unregisterReceiver(receiver);

4.2 在AndroidManifest文件中配置

application之间

 <receiver android:name=".KalusReceiver">
            <intent-filter>
                <action android:name="com.kalus.receiver.RECEIVER"/>
            </intent-filter>
        </receiver>

在onReceive中启动服务service只能用startService(intent)

如果用context.bindService(service, conn, Context.BIND_AUTO_CREATE);会报错

错误如下:IntentReceiver components are not allowed to bind to service
"123".startsWith("") //true

求素数:

for(int i=2;i<1000;i++){
            boolean f = true;
            for(int j=2;j<=i/2;j++){
                if(i%j==0){
                    f = false;
                    break;
                }
                
            }
            if(f){
                System.out.println(i);
            }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值