service 的四种使用场景与方法

今天晚上把service的用法整理一下,service在Android中的地位仅次于activity,其重要性可见一斑。下面主要从四个部分分别讲解:
分别是startService,bindservice(两个基础用法。通过log查看生命周期)messenger和aidl(Android IPC机制主要也是通过service与binder来实现的)
编写activityInfo类来管理这四个测试的activity类,方便activity之间的跳转,简化代码

package com.example.servicetest;

public class ActivityInfo
{
   
    private String name;
    private Class clazz;

    public ActivityInfo(String name, Class clazz)
    {
        super();
        this.name = name;
        this.clazz = clazz;
    }

    public String getName()
    {
        return name;
    }

    public Class getClazz()
    {
        return clazz;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    public void setClazz(Class clazz)
    {
        this.clazz = clazz;
    }

}

测试主类 MainActivity代码:

package com.example.servicetest;

import java.util.Arrays;
import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

public class MainActivity extends Activity
{
   
    private ListView mListView;

    private final List<ActivityInfo> mData = Arrays.asList(new ActivityInfo(
            "StartService", ActivityStartService.class), new ActivityInfo(
            "bindService", ActivityBindService.class), new ActivityInfo(
            "Menssenger", ActivityMessenger.class), new ActivityInfo("aidl",
            ActivityAidl.class));

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化view,个人的风格而已
        initView();
    }

    private void initView()
    {
        mListView = (ListView) findViewById(R.id.lv_activity_main);
        //为listview设置adapter
        mListView.setAdapter(new MyAdapter(this, mData));
        mListView.setOnItemClickListener(new OnItemClickListener()
        {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3)
            {
                Intent intent = new Intent();
                //通过前面设计的activityInfo得到要跳转的activity的class
                intent.setClass(MainActivity.this, mData.get(arg2).getClazz());
                startActivity(intent);
            }
        });
    }
}

listView的adapter实现很简单,继承自baseAdapter,使用viewholder去优化listview,想必大家都了解。
(1)通过startService(Intent intent)的方式开启服务

package com.example.servicetest;

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 ActivityStartService extends Activity implements OnClickListener
{
   

    private Button mButtonStart, mButtonStop;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super</
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值