开发一个监控系统碰到的问题,我能拿出的最高分求解
开发一个监控系统(具体什么就不说了),通过socket与后台程序进行通讯,先碰到以下问题,求解
先说下大体思路:登陆界面登陆后startservice,service打开线程进行socket通讯,前台activity通过broadcast
与service通讯。现有以下问题求解:
1.当接受到服务器端发来的某些信息时,有多个activity的ui需要更新,当前显示的actticity不用说了,但是处于stop
状态的activity怎么更新ui呢?这个包括用户点击了home键,报警界面也隐藏了怎么更新?
2.当程序登陆完成以后,并进入了某个页面,然后点击了home键,这时怎样能记住用户刚才打开的页面并进入呢?我的程序
又打开了登陆界面。。。。
3.程序的service在那里stop较好呢?我是希望所有的登陆的acitivity都推出以后就停止掉,这个怎么能够检测到呢?
暂时就这个,希望有大大来指点下。。
[解决办法]
1、通过service发送广播给一个专门用于启动Activity的广播接收机,由这个接收机启动Activity
2、在service定义一个方法,用于设置当前的Activity编号,每个Activity启动时调用service的方法去标记当前的Activity的编号,当要用Activity时,通过这个编号再去启动相应的Activity;
3、在service定义一个Activity数量统计的变量对象,并设置相应的方法,每启动一个Activity就调用service的方法使变量加1,每关闭一个Activity就调用service方法使变量减1,当变量为0时,退出。
[解决办法]
1.
方法A.发intent,所有接受intent的activity,去更新UI.
方法B.如果是读数据库的话,可以设置noContentChanged,来读取数据库内容,然后更新。
2.
定义常量,给每个Activity一个标记,在每个activity resume的时候,写sharedpref。
登陆后,读sharedpref,来启动对应的activity.
3.
Application的,ActivityLifecycleCallbacks,注册后,当有activity状态变化后,会调用。可以在这里统计
[解决办法]