Android service(四)Intent服务

来源:互联网 发布:最好企业网络投资理财 编辑:程序博客网 时间:2024/04/30 12:44

很多时候,在服务中需要做一些耗时的操作。这样就得在onStartCommand函数中来添加一个线程来完成。完成操作之后,还要自己停止服务,在开发中,时常会忘记开启线程或者忘记停止服务,Android为了解决这一问题,开发了intent服务。
下面通过实例来学习intent服务。
1.创建intent服务

public class MyService extends IntentService {    public MyService() {        super("MyService");        // TODO Auto-generated constructor stub    }    @Override    protected void onHandleIntent(Intent intent) {        // TODO Auto-generated method stub        Log.i("info", "service thread : " + Thread.currentThread().getId());        for (int i = 0; i < 10; i++) {            Log.i("info", "num : " + i);        }    }    @Override    public void onDestroy() {        // TODO Auto-generated method stub        super.onDestroy();        Log.i("info", "service onDestroy");    }}

2.创建开启服务按钮

public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Button button = (Button) findViewById(R.id.start);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                // TODO Auto-generated method stub                Log.i("info", "main thread:" + Thread.currentThread().getId());                Intent service = new Intent(MainActivity.this, MyService.class);                startService(service);            }        });    }}

注意,这里只是开启按钮,因为intent服务是可以自动关闭的,测试下:运行程序,查看结果:
这里写图片描述
可以看到,服务是真的开启了另一个线程,而且打印一连串的log之后,自动关闭了。
项目地址:明天更新
心记不如淡墨。。哈哈

0 0