服务的基本用法-1
来源:互联网 发布:淘宝倒卖赚差价的生意 编辑:程序博客网 时间:2024/05/28 11:30
服务,作为Android四大组件之一(相信大家都知道Android的四大组件是什么了),有非常多重要的知识点,当然作为Android开发的新人,我们首先要从服务最基本的用法开始学习。还是闲言少叙,我们直奔主题,开始学习。
要学习服务,首先我们要来定义一个服务。打开Android Studio,新建一个ServiceTest1项目,然后在com.example.servicetest1上右键,然后New--Service--Service,会弹出一个窗口,MyService是这个服务的名称,其他的选项我们默认选中就可以了,点击Finish完成。这样我们就创建好了一个服务。下面是MyService这个服务中的代码:
public class MyService extends Service {
public MyService() { } @Override public IBinder onBind(Intent intent) { throw new UnsupportedOperationException("Not yet implemented"); }
}
可以看到,MyService是继承自Service类,说明这是一个服务。接下来,我们要在这个服务里面做一些事情了。也就是具体的逻辑
可以看到,我们在MyService服务里面重写了图中红框里面的内容。其中,onCreate()方法是在服务“第一次”创建的时候调用,onStartCommand()方法是在每次启动服务的时候调用,而onDestroy()方法顾名思义,就是在服务销毁的时候调用。通常情况下,可以将逻辑写在onStartCommand()方法中。 另外不要忘记,一定要在AndroidManifest.xml中注册服务。当然了,这方面Android Studio已经帮助我们自动创建号了。 这样,我们就已经将一个服务完全定义好了。
定义好了服务之后,接下来,我们来看看如何启动和停止服务。这里主要还是借助Intent来实现。
首先我们来编辑一下activity_main.xml中的代码:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/start_service" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Start Service" android:textAllCaps="false" /> <Button android:id="@+id/stop_service" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Stop Service" android:textAllCaps="false" /></LinearLayout>
很简单的布局文件,就是在页面添加了两个点击按钮,分别用于启动服务和停止服务。然后再来编辑MainActivity中的代码逻辑,如下所示:public class MainActivity extends AppCompatActivity implements View.OnClickListener{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button startService = (Button) findViewById(R.id.start_service); Button stopService = (Button) findViewById(R.id.stop_service); startService.setOnClickListener(this); stopService.setOnClickListener(this); } @Override public void onClick(View v){ switch (v.getId()){ case R.id.start_service: Intent startIntent = new Intent(this, MyService.class); startService(startIntent); //启动服务 break; case R.id.stop_service: Intent stopIntent = new Intent(this, MyService.class); stopService(stopIntent); //停止服务 break; default: break; } }}
首先,我们在onCreate()方法里面,分别获取到了两个按钮的实例,然后给他们注册了点击事件。接着在onClick()方法中,在Start Service的点击事件里,先构建了一个Intent对象,然limian j后通过startService()来启动MyService这个服务。同样,停止服务也是相同的道理。那么我们如何确定服务已经启动或者已经停止了呢。很简单,我们在MyService的几个方法里面加上监控日志就可以了。如下所示:
@Overridepublic void onCreate(){ super.onCreate(); Log.d("MyService", "onCreate executed");}@Overridepublic int onStartCommand(Intent intent, int flags, int startId){ Log.d("MyService", "onStartCommand executed"); return super.onStartCommand(intent,flags,startId);}@Overridepublic void onDestroy(){ super.onDestroy(); Log.d("MyService", "onDestroy executed");}
可以看到,在MyService服务中,我把每一个方法里面都加上了日志,一旦该方法执行,日志就会打印出来,我们就可以知道,服务有没有启动,有没有停止了。接下来,运行程序,主界面如图所示:
点击一下Start Service按钮,观察logcat中打印的日志,如下图所示:
可以看到,MyService服务中onCreate()和onStartCommand()方法都执行了。并且我们可以在手机开发者选项的正在运行的服务里面找到,如下图:
不知道大家有没有疑问,那就是onCreate()方法和onStartCommand()方法到底有什么区别,因为刚刚点击启动服务按钮,两个方法都执行了。其实,onCreate()方法是只有服务在第一次启动的时候才会执行,之后在点击启动服务,就会只执行onStartCommand()方法了。我们可以再次点击一下启动服务的按钮,看一下logcat日志的现实,如下图:
这样,我们的疑问就彻底解决了。到这里,关于服务的启动,停止以及服务里面所重写的方法之间的区别我们就都掌握了。
0 0
- 服务的基本用法-1
- 服务的基本用法
- 服务的基本用法
- Service服务的基本用法
- 服务Service的基本用法
- 服务的基本用法-2
- 服务的基本用法-3
- ssh服务的基本用法
- android 学习笔记 服务的基本用法
- Android Service 服务的基本用法
- service的基本用法+远程服务
- android---(Service服务的基本用法)
- Android学习-服务的基本用法
- android服务基本用法
- AngularJS服务基本用法
- android学习十八(Service服务的基本用法)
- 【Android】安卓学习笔记之服务的基本用法
- 第一行代码-9.3 服务的基本用法
- 3.2 JS 变量提升&&函数参数
- 563. Binary Tree Tilt
- Batch Normalization梯度反向传播推导
- 2017-05-09 总结
- Android N 多窗口的设计
- 服务的基本用法-1
- ios 蓝牙开发总结
- hihoCoder 1518 : 最大集合
- 熔断器设计模式
- 在 Ubuntu 中手动安装任何版本的 Firefox
- Android Studio安装Genymotion插件
- 随便逛了下CSDN的课堂
- struts2 项目j建立过程
- 静态化