Android:Service通知Activity更新界面
2016-02-23 20:41
621 查看
Android有四大组件,其中包括service和activity,那么在使用的过程中,我们最常遇到的问题是他们之间的通信问题。
但是此时会引发的一个问题是,多次startActivity会导致很多的activity实现被运行,这肯定不是我们要的,我只要一个Activity就可,此时,我们要在androidManifest里面对这个activity的launchMode设置为singleInstance
记住啦,有人设置为singleTask,也可以,但他们有一点区别。
同时记住要更新intent,这样getInstent才可以得到每次的新实例
http://www.truiton.com/2015/03/android-switch-button-example/
1.首先Activity调用Service
这个是比较基础的,它有两种常见的方法;1. 通过Intent
可以指定package name和class name的方式来调用,Intent.setClassName这个成员即可。通过putString来装载数据,startService(intent)即可例子如下:Intent regIntent = new Intent(“com.service”); regIntent.putExtra(“data”, "helloData"); startService(regIntent);
2.通过IPC
IPC有点复杂,想要了解的可以去查有关IBinder的一些资料。2.Service将状态告诉Activity
方法有两种1.service 通过广播的形式发送broadcast
我们写一个broadcastReceiver即可,通常的情况,将broadcastReceiver写成Activity的内部类,这个onReceiver可以直接调用activity的方法来更新界面。但是内部类只能采用代码注册的方法registerReceiver(),不能再AndroidManifest.xml文件中进行静态的声明,因为内部类要依赖于外部类而存在的。如果你一定要用AndroidManifest来注册receiver,那么只能把broadcastReceiver写成单独的文件的public类。这时候,你想更新界面就比较麻烦了,你只能自己把你要更新的activity运行起来,然后再向这个activity的内部类发广播的消息来更新界面2.service直接向activity发intent
在service里面进行startActivity是属于在Activity外startActivity即在task外启动activity,因此,必须在intent加入一个参数如下:Intent intentSend = new Intent(Constants.ACTION_STATUS); intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent1.putExtra(“statues“,“end“); context.startActivity(intent1);
但是此时会引发的一个问题是,多次startActivity会导致很多的activity实现被运行,这肯定不是我们要的,我只要一个Activity就可,此时,我们要在androidManifest里面对这个activity的launchMode设置为singleInstance
<activity android:name="com.demo.Activity" android:label="@string/online" android:launchMode="singleInstance">
记住啦,有人设置为singleTask,也可以,但他们有一点区别。
同时记住要更新intent,这样getInstent才可以得到每次的新实例
@Override protected void onNewIntent (Intent intent){ setIntent(intent); }
http://www.truiton.com/2015/03/android-switch-button-example/
相关文章推荐
- android绘图
- Android 项目版本的修改
- Android adb.exe程序启动不起来,如何处理
- 学习android过程中的试用成功的知识点
- Android中级篇之百度地图SDK v3.5.0-配置环境及发布[图解AndroidStudio下配置.so文件]
- android activity启动的四种模式
- Android Studio如何删除module
- 获取安卓应用包名和入口 Activity
- ubuntu下载Android源代码
- CardView 设置 selector
- 安卓 Bitmap 高效加载
- android服务unbind之后再想绑定问题
- Android 学习-Driver in kernel-2-添加GPIO控制
- android 自定义圆形ProgressBar
- Android Tool——Monkey自动化测试
- Android 项目开发实战:答题系统
- android shape绘制组件边框
- android内部存储读写文件详解
- Android中级篇之百度地图SDK v3.5.0-配置环境及发布[图解AndroidStudio下配置.so文件]
- New Activity探索(二):BasicActivity