Android 四大组件之service与Broadcast
Android 四大组件之一:service:
Service有五个生命周期:onCreat,onStartCommand, onBind,onUnbind, onDestroy
主要有绑定和非绑定两种方式
首相在Activity中设置四个Button,用于测试绑定和非绑定两种方式,按下Button播放音乐,停止音乐,非绑定用StopService停止,绑定方式用Bind Service启动,解绑用unbindService停止。
非绑定:Intent intent=new Intent(MainActivity.this,MyService.class);
start Service(intent);/stopSercice(intent)
从Activity启动service主要用上述代码,
绑定:Intentintent=newIntent(MainActivity.this,MyService.class);
bindService(intent,serviceConnection,BIND_AUTO_CREATE);
serviceConnection为:
private ServiceConnection serviceConnection=new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name,
IBinder service) {
myService=((MyService.MyBinder)service).getService();
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
};
绑定写法为固定写法
在Service中还可以使用函数回调的方式来进行某些操作
函数回调一般有四个步骤:
1. 定义一个借口,借口里定义一个方法
2. Activity中实现这个借口,和借口里的方法
3.Service中定义public static void setMusicStop(Context context){
stopImg = (StopImg) context;
}
4.在Activity中传入作用域就能够调用Service中的方法。
函数回调一般分为这四个步骤。
函数回调不仅用于Activity与Service中,还可以用于Activity与Activity中。
音乐播放器中一般用到函数回调。
Broadcast:广播
注册方法非为静态、动态两种方式
静态即在清单文件中手动注册
<receiver
android:name=".Broadcast.MySMS"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
其中的android:name="android.provider.Telephony.SMS_RECEIVED"
为自己定义的名称
动态注册:
//动态注册广播
IntentFilter intent Filter=new IntentFilter();
intentFilter.addAction("android.jredu.action.WEN");
registerReceiver(new MyactiveBroad(),intentFilter);
public class MyactiveBroad extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
String arg2 = intent.getStringExtra("arg2");
Log.d("===========接受======",arg2);
}
}
广播注册完成后,还要下一个继承BroadcastReceiver的方法,用于接收广播的内容,想要在哪接收广播,就要在哪注册广播。
下面写一个广播的测试程序来说明:用到之前说的Service
首先,建立一个Activity1,设置两个Button,
一个测试静态注册,一个用于跳转测试动态注册。
再建立一个Service,静态注册,
在Service清单文件中,加入
<receiver
android:name=".Broadcast.MyReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.jredu.broadcast.ZHANG" />
</intent-filter>
</receiver>
这就静态注册了一个广播,广播的name为
<action android:name="android.jredu.broadcast.ZHANG" />
再建立一个Activity2,测试动态发送。
下为Activity1的内容
public class BroadcastActivity extends AppCompatActivity {
private Button bt1,bt2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_broadcast);
bt1= (Button) findViewById(R.id.bt1);
bt2= (Button) findViewById(R.id.bt2);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.putExtra("arg","你好");
intent.setAction("android.jredu.broadcast.ZHANG");
sendBroadcast(intent);
}
});
bt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(getBaseContext(),BroadActivity.class);
startActivity(intent);
}
});
//动态注册广播
IntentFilter intentFilter=new IntentFilter();
intentFilter.addAction("android.jredu.action.WEN");
registerReceiver(new MyactiveBroad(),intentFilter);
}
public class MyactiveBroad extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
String arg2 = intent.getStringExtra("arg2");
Log.d("===========接受======",arg2);
}
}
}
下为Activity2的内容:中有一个Button,按下发送广播
public class BroadActivity extends AppCompatActivity {
private Button bt1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_broad);
bt1= (Button) findViewById(R.id.bt1);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.putExtra("arg2","42870");
intent.setAction("android.jredu.action.WEN");
sendBroadcast(intent);
}
});
}
}
Android 四大组件之service与Broadcast的更多相关文章
- Android四大组件之Service
Android四大组件之Service Android支持服务的概念,服务是在后台运行的组件,没有用户界面,Android服务可用有与活动独立的生命周期.Android支持两种类型的服务: 本地服务: ...
- 【Android开发日记】之入门篇(五)——Android四大组件之Service
这几天忙着驾校考试,连电脑都碰不到了,今天总算告一段落了~~Service作为Android的服务组件,默默地在后台为整个程序服务,辅助应用与系统中的其他组件或系统服务进行沟通.它跟Activity的 ...
- Android成长日记-Android四大组件之Service组件的学习
1.什么是Service? Service是Android四大组件中与Activity最相似的组件,它们都代表可执行的程序,Service与Activity的区别在于:Service一直在后台运行,它 ...
- Android四大组件之一Service介绍-android学习之旅(十二)
基本概念: service是android四大组件之一,运行在后台执行耗时操作,并不提供用户界面.其他组件如acticity可以通过startService启动该组件,也可以通过bindService ...
- Android四大组件之一 -- Service详解
相信大多数朋友对Service这个名词都不会陌生,没错,一个老练的Android程序员如果连Service都没听说过的话,那确实也太逊了.Service作为Android四大组件之一,在每一个应用程序 ...
- Android四大组件:Service
前言 Service作为Android四大组件之一,应用非常广泛 本文将介绍对Service进行全面介绍(基础认识.生命周期.使用和应用场景) 目录 目录 1. 基础知识 定义:服务,属于Androi ...
- Android四大组件之Service浅见
Service 是Android四大组件之一,可以在不显示界面的情况下在后台运行.还有一个作用是通过AIDL来实现进程间通信. Service的启动方式 Service的启动方式有两种,startSe ...
- Android 四大组件之Service
---恢复内容开始--- 1,Service的生命周期
- 谈Android四大组件之Service篇
Service简介 Service是Android系统中的四大组件之一,它是一种长生命周期的,没有可视化界面,运行于后台的一种服务程序.Service必须在AndroidManifest.xml中声明 ...
随机推荐
- VC6.0 list sort出错
在STL中,排序是个很重要的话题. 1.algorithm 里的sort()只接收RandomAccessIterator用于像vector,dequeue的排序 2.像set,map,这种关联式容器 ...
- HTTP, W3SVC, WAS 和 W3WP
IIS 请求主要模块 当客户端向 IIS 发出 HTTP 请求时,会有很多事情发生. 有许多内核模式和本机模式组件,用于将请求路由到最终响应请求的 W3WP 进程. 响应一个 ...
- Android应用连接代理服务器状况监测解决
最近项目里面有这样一个需求,由于项目涉密需要连接VPN通过网址映射去登录内部服务器,而且要通知客户vpn的连接状态.网上有许多类似的连接VPN的解决方案,我也尝试了很多种,下面先列出一种比较靠谱的方式 ...
- HDU --- 4006
The kth great number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Oth ...
- 【转】Markus Persson:Minecraft 游戏背后的奇才
转自酷勤网 Markus Persson是沙盒游戏Minecraft的开发者,在游戏中以Notch的名字为众多玩家所知,是游戏界绝对的巨星.美国<滚石>杂志的专栏作家David Peisn ...
- Bzoj 3809: Gty的二逼妹子序列 莫队,分块
3809: Gty的二逼妹子序列 Time Limit: 35 Sec Memory Limit: 28 MBSubmit: 868 Solved: 234[Submit][Status][Dis ...
- [经典] Best Time to Buy and Sell Stock
这一系列求最优值的问题变种挺多 1. Say you have an array for which the ith element is the price of a given stock on ...
- lightoj 1032 二进制的dp
题目链接:http://lightoj.com/volume_showproblem.php?problem=1032 #include <cstdio> #include <cst ...
- JavaScript之this指针深入详解
javascript中的this含义非常丰富,它可以是全局对象,当前对象或者是任意对象,这都取决于函数的调用方式.函数有以下几种调用方式:作为对象方法调用.作为函数调用.作为构造函数调用.apply或 ...
- Kadj Squares - POJ 3347
题目大意:给一些序列的正方形的边长,然后让这个正方形倾斜45度,放在第一象限,一个角要紧挨着x轴,按照输入的顺序放下去,然后问最后从上往下看可以看到那些正方形? 分析:不能算是计算几何题..... ...