Aadroid的Activity和Service

Activity(四大组件之一

  1. 如何创建Activity

    AS创建的(省略很多过程)(必须掌握)

    AS创建Activity省略了哪些过程?(理解)

    1. xml文件

    2. java文件,并在java文件中 继承 AppCompatActivity,在onCreate()方法中,setContentView() ,将java文件跟xml文件连接在一起

    3. androidManifest.xml文件中注册Activity

  2. Acitivity之间的跳转

    假设 MainActivity.java MainActivity2.java

    从MainActivity.java 跳转到 MainActivity2.java

                        常用的方法

  Intent intent = new Intent(MainActivity.this, MainActivity2.class);
  startActivity(intent);

                        另外一种方法

   Intent intent = new Intent();
   intent.setClass(MainActivity.this, MainActivity2.class);
   startActivity(intent);

                        从MainActivity2.java 跳转到 MainActivity.java

Intent intent = new Intent(MainActivity2.this, MainActivity.class);
startActivity(intent);

                        如果从MainActivity2.java 跳转到 MainActivity.java,MainActivity2不需要存活了

finish();

        3.Activity之间跳转的时候如何传值

                传单个的值

          1.定义值

Button but_cz1=findViewById(R.id.but_cz1);
but_cz1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent=new Intent(MainActivity.this,MainActivity3.class);
        intent.putExtra("name","张三");
        intent.putExtra("age",18);
        intent.putExtra("id",1);
        startActivity(intent);
    }
});

         2.操作值

public class MainActivity3 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);

        Intent intent= getIntent();
        String name=intent.getStringExtra("name");
        int age=intent.getIntExtra("age",18);
        int id=intent.getIntExtra("id",1);

        Toast.makeText(MainActivity3.this,"名字:"+name+",年龄:"+age+",编号:"+id,Toast.LENGTH_SHORT).show();
    }
}

                传对象

        1.创建一个对象

private int id;
private String name;
private String sex;
private int age;

public Person(){

}

public Person(int id, String name, String sex, int age){
    this.id = id;
    this.name = name;
    this.sex = sex;
    this.age = age;
}


public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getName() {
    return name;
}

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

public String getSex() {
    return sex;
}

public void setSex(String sex) {
    this.sex = sex;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

        2.传对象

btn_main3.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this, MainActivity3.class);
        Person person = new Person(1, "李四","女",18);
        intent.putExtra("person",person);
        startActivity(intent);
    }
});

        3.操作对象

public class MainActivity3 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);

        Intent intent = getIntent();
        Person person = (Person) intent.getSerializableExtra("person");
        String name = person.getName();
        String sex = person.getSex();
        int age = person.getAge();

        Log.i("序列化接收到的值:","name:"+name+",sex:"+sex+",age:"+age);
    }
}

​    4. Activity生命周期

        为什么要使用生命周期?

        增强代码的复用性        

        Activity里有几个生命周期?

        1.onCreat()

        2.onStart()

        3.onResume()

        4.onRestart()

        5.onPause()

        6.onStop()

        7.onDestroy()

​     初次打开app               onCreate()  onStart() onResume()

​     隐藏app                        onPause() onStop()

​     打开隐藏的app            onRestart() onStart() onResume()

​     退出app                        onPause() onStop onDestroy()

Service(四大组件之一)

        

  1. 什么是Service

    • Service是Android四大组件之一 (必须在androidManifest.xml中进行注册)

    • 可以在后台执行长时间运行操作而没有用户界面的应用组件

Activity MainActivity.java

activity_main.xml

Service XXXXXXX.java

Service在现阶段的APP什么位置有体现?

手机音乐播放器

2. 创建Service

不使用Android Studio应该如何创建?

        1. 创建java文件,继续Service
        2. 在AndroidManifest.xml中进行注册

使用android Studio应该如何创建?

        

3.怎么调用Service

第一种方式:startService 访问者跟Service是不绑定的

        1.创建serivce,见上图

        2.实现他的三个构造方法,和一个无参的构造方法

                三个构造方法onCreate() onStartCommand() onDestroy()

public class MyService extends Service {
    public MyService() {
    }

    @Override
    public void onCreate() {
        super.onCreate();
        Log.i("Service启动","service的onCreate方法被调用");
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.i("Service启动","service的onStartCommand方法被调用");
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() {
        Log.i("Service启动","service的onDestroy方法被调用");
        super.onDestroy();
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }
}

        3.在AndroidManifest.xml里注册

<service
    android:name=".MyService"
    android:enabled="true"
    android:exported="true" />

        4.开始在MainActicity里面开启serivce

                我这里创建了一个按钮开启serivce

Button but_se_1=findViewById(R.id.but_se_1);

but_se_1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent(MainActivity5.this,MyService.class);
                startService(intent);
            }
        });

        5.关闭serivce

                我这里也是创建了一个按钮关闭serivce

Button but_se_2=findViewById(R.id.but_se_2);
but_se_2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent=new Intent(MainActivity5.this,MyService.class);
        stopService(intent);
    }
});

第二种方式:bindService 访问者跟Service是绑定,访问者一旦退出了,Service也就终止了。

//绑定service

Intent intent = new Intent(MainActivity.this, MyBindService.class);
bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);     

public ServiceConnection serviceConnection = new ServiceConnection() {
    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {
        Log.i("ServiceConnection", "onServiceConnected");
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {
        Log.i("ServiceConnection", "onServiceDisconnected");
    }
};

4.Service的生命周期

        startService的方式

onCreate() onStartCommand() onDestroy()

        bindService的方式

onCreate() onBind() onUnBind() onDestroy()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值