Android服务的基本使用1(启动服务)
来源:互联网 发布:软件测试个人心得 编辑:程序博客网 时间:2024/06/04 01:24
我有一时,曾经屡次忆起儿时在故乡所吃的蔬菜:菱角、罗汉豆、茭白、香瓜。凡这些,都是极其鲜美可口的;都曾是使我思乡的蛊惑。后来,我在久别之后尝到了,也不过如此;惟独在记忆上,还有旧来的意味存留。他们也许要哄骗我一生,使我时时反顾。
鲁迅《朝花夕拾》
在布局中简单的写两个按钮
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="启动服务" android:onClick="start" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="停止服务" android:onClick="stop" />
MainActivity
public class MainActivity extends AppCompatActivity { private Intent intent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); intent = new Intent(this, MyServices.class); } public void start(View view) { intent.putExtra("data", "下载的路径"); startService(intent); } public void stop(View view) { stopService(intent); }}
MyServices.java
public class MyServices extends Service { @Nullable @Override public IBinder onBind(Intent intent) { Log.i("test", "onBind"); return null; } //创建服务 @Override public void onCreate() { Log.i("test", "onCreate"); super.onCreate(); } //启动服务 @Override public int onStartCommand(Intent intent, int flags, int startId) { String data= intent.getStringExtra("data"); Log.i("test", "onStartCommand,"+data); new MyThread(startId).start(); return super.onStartCommand(intent, flags, startId); } class MyThread extends Thread { private int startId; public MyThread(int startId) { this.startId = startId; } @Override public void run() { super.run(); //耗时操作 for (int i = 0; i < 10; i++) { Log.i("test", "i=" + i); SystemClock.sleep(1000); } //停止服务 // stopSelf();//当第一个线程执行完毕,则会停止服务 //当所有线程执行完毕,则会停止服务 stopSelf(startId); } } //停止服务 @Override public void onDestroy() { Log.i("test", "onDestroy"); super.onDestroy(); }}
**在启动服务中要注意的是 :
ANR:application not responsing应用程序未响应
why:耗时操作写到了主线程
how:子线程
why:服务和Thread的区别?
服务:死了可以活过来
线程:死了就是死了
QQ的接收消息:两三天没登,消息还是可以接收**
MyServices2.Java
public class MyServices2 extends IntentService { //无参调用父类有参 public MyServices2() { super(""); } public MyServices2(String name) { super(name); } //类似Service中的:onStartCommand /* *区别:1.在于可以直接进行耗时操作 * 2.排队进行服务 */ @Override protected void onHandleIntent(Intent intent) { for (int i = 0; i < 10; i++) { Log.i("test", "i=" + i); SystemClock.sleep(200); } }}
清单文件的配置
<service android:name=".MyServices" android:exported="true" ></service> <service android:name=".MyServices2" android:exported="true" ></service>
在配置MyServices2的时候要写一个无参调用父类有参的构造函数,要不然会报错
1 0
- Android服务的基本使用1(启动服务)
- Android服务的基本使用2(绑定服务)
- android---(Service服务的基本用法)
- AnglurJS 服务的基本使用
- Android一些服务的启动
- Android: Service(启动服务)
- Android 使用Intent启动常用的应用与服务(转)
- Android 使用Intent启动常用的应用与服务
- Android 使用Intent启动常用的应用与服务
- 使用AlarmManager启动广播、服务、页面(Android定时器)
- Android之使用bindService启动服务
- Qt on Android 启动一个Android的服务(Service)
- 服务的基本用法-1
- Android启动服务和绑定服务的方法调用
- android服务基本用法
- 基本使用mysql服务
- Android Service---启动服务
- Android Service---启动服务
- Linux Shell sort排序常用命令
- poj2109 Power of Cryptography —— 技巧性(高精度+二分的方法还没写)
- Struts从2.1升级到2.3版本过程
- Android自定义标题栏
- TCP协议三次握手,四次挥手机制
- Android服务的基本使用1(启动服务)
- service(上)
- 1077_最大序列和
- volatile和锁的简单总结
- 关于eclipse项目导入android studio遇到的坑
- 无人驾驶:多种技术的集成
- Solr突出显示示例
- 一篇网络流的好blog
- 大数据导论(二) Hadoop简介