Android的Service学习一

    由Android SDK中提及到Application Components有四种:Activity、Service、Content providers、Broadcast receivers,其中Activity已经了解过,而对于Service就现在开始学习它。文档中提到A service is simply a component that can run in the background even when the user is not interacting with your application. (服务是一个简单的组件,可以在后台运行甚至当用户不与应用程序交互)。使用Service的方式,其中一个是startService方法,调用者和服务之间没有什么联系,及时调用者退出了,服务仍然进行着[(onCreate-->onStart(这个方法由文档中可以了解到它直接由onStartCommand替代了,所以可以去掉)-->startService-->onDestory)]。还有一个是bindService,调用者和服务绑定在一起,调用者一旦退出,服务也相应的终止[(onCreate-->onBind-->onUnbind-->onDestory)]。

    下面创建了一个Demo来讲述Service的应用,项目列表如下:


其中创建了一个ExampleService类继承Service抽象类,代码如下:

package com.cooguo.service;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;

public class ExampleService extends Service {
private static final String TAG = "ExampleService";
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}

@Override
public void onCreate() {
Log.i(TAG, "ExampleService--->onCreate");
super.onCreate();
}

@Override
public void onStart(Intent intent, int startId) {
Log.i(TAG, "ExampleService--->onStart");
super.onStart(intent, startId);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG, "ExampleService--->onStartCommand");
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
Log.i(TAG, "ExampleService-->onDestroy");
super.onDestroy();
}

}

而MainActivity就是设置了两个按钮来触发Service事件的发生代码如下:

package com.cooguo.service;
import com.cooguo.service.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
    /** Called when the activity is first created. */
private Button btnStartService = null;
private Button btnStopService = null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btnStartService = (Button)findViewById(R.id.btnStartService);
        btnStartService.setOnClickListener(listener);
        btnStopService = (Button)findViewById(R.id.btnStopService);
        btnStopService.setOnClickListener(listener);
        
    }
    private OnClickListener listener = new OnClickListener(){
@Override
public void onClick(View view) {
Button btn = (Button)view;
Intent iten = new Intent();
iten.setClass(MainActivity.this,ExampleService.class);
switch (btn.getId()) {
case R.id.btnStartService:
startService(iten);
break;
case R.id.btnStopService:
stopService(iten);
break;


    }
}
    
    };
}

Service服务跟Activity也一样,在AndroidManifest.xml配置文件中也要配置Service服务配置信息如下:

<service android:name=".ExampleService"/>

值得注意一下的是onStartCommand(Intent intent, int flags, int startId)这个方法,文档中提到这个方法的三个参数说明如下:

intent:The Intent supplied to startService(Intent), as given. This may be null if the service is being restarted after its process has gone away, and it had previously returned anything except START_STICKY_COMPATIBILITY.
flags: Additional data about this start request. Currently either 0, START_FLAG_REDELIVERY, or START_FLAG_RETRY.
startId: A unique integer representing this specific request to start. Use with stopSelfResult(int).(类似于省份证表识相对应的Service)

如果我们要对Service进行操作就可以在这个方法里面执行,比如文件的上传下载或者是音乐的播放等等。

这个方法有三个返回值可以看一下截图:


在开发的时候可以适当的了解选择使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值