安卓开发学习——day8

文章目录

  • 写在前面:
  • 1.服务
    • (1).创建service:
    • (2).在Activity绑定
    • (3).在AndroidManifest中注册Service
    • 效果
  • 2.广播
  • 3.弹窗
  • 总结:

写在前面:

今天要实现的是按住按钮,启动服务,耗时10秒,发送广播,然后弹出弹窗,这涉及到服务,广播,弹窗。

1.服务

 1、onCreate():当Service第一次被创建后立即调用该方法,该方法在Service的生命周期里只被调用一次!
2、onDestory():当Service被关闭时调用该方法,该方法只被调用一次!
3、onStartCommand():当Service被调用时,调用该方法。该方法可被重复调用,并且不会创建新的Service对象,而是复用前面产生的Service对象。
4、onBind():这是Service必须实现的方法,该方法会返回一个IBinder对象,APP通过该对象与Service组件进行通信。
5、onUnBind():当该Service绑定的所有客户端都断开时调用该方法。

(1).创建service:

和Activity类似

package com.example.task4;

import androidx.appcompat.app.AppCompatActivity;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
     

    private Button btnStart;
    private Button btnStop;
    private Button btnStatus;

    private Intent intent;

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

        btnStart = findViewById(R.id.btn_start);
        btnStop = findViewById(R.id.btn_stop);
        btnStatus = findViewById(R.id.btn_status);

        btnStart.setOnClickListener(this);
        btnStop.setOnClickListener(this);
        btnStatus.setOnClickListener(this);

        AlertDialog alertDialog = new AlertDialog.Builder(this)
                .setTitle("提示")
                .setMessage("资源下载完成")
                .setNeutralButton("确定", new DialogInterface.OnClickListener() {
     
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
     

                    }
                })
                .create();
        alertDialog.show();
    }

    @Override
    public void onClick(View v) {
     
        switch (v.getId()) {
     
            case R.id.btn_start: {
     
                intent = new Intent(this, StartService.class);
                startService(intent);
                break;
            }
            case R.id.btn_stop: {
     
                intent = new Intent(this, StartService.class);
                stopService(intent);
                break;
            }
        }
    }
}

(2).在Activity绑定

package com.example.task4;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;

import androidx.annotation.Nullable;

public class StartService extends Service {
     

    private final String TAG = "StartServer";

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
     
        Log.e(TAG, "onBind方法被调用");
        return null;
    }

    //Service创建时调用
    @Override
    public void onCreate() {
     
        Log.e(TAG,"onCreate方法被调用");
        super.onCreate();
    }

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

    @Override
    public void onDestroy() {
     
        Log.e(TAG, "onDestroy方法被调用");
        super.onDestroy();
    }
}

(3).在AndroidManifest中注册Service

Android的四大组件,只有定义了,就必须去AndroidManifest.xml中注册一下

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

其中enabled属性,是指该服务是否能够被实例化。如果设置为true,则能够被实例化,否则不能被实例化,默认值是true。
exported属性用于指示该服务是否能够被其他应用程序组件调用或跟它交互。如果设置为true,则能够被调用或交互(通常如果一个服务需要跨进程使用需要这么设置),否则不能。设置为false时,只有同一个应用程序的组件或带有相同用户ID的应用程序才能启动或绑定该服务。

效果

安卓开发学习——day8_第1张图片

在这里插入图片描述

更多

2.广播

广播的内容只有明天做了

3.弹窗

今天使用到的弹窗是AlertDialog:

setTitle 为对话框设置标题
setIcon 为对话框设置图标
setMessage 为对话框设置内容
setView 给对话框设置自定义样式
setItems 设置对话框要显示的一个list,一般用于显示几个命令时
setMultiChoiceItems 用来设置对话框显示一系列的复选框
setSingleChoiceItems 用来设置对话框显示一系列的单选框
setNeutralButton 普通按钮
setPositiveButton 给对话框添加"Yes"按钮
setNegativeButton 对话框添加"No"按钮
create 创建对话框
show 显示对话框
AlertDialog alertDialog = new AlertDialog.Builder(this)
                .setTitle("提示") //
                .setMessage("资源下载完成")
                .setNeutralButton("确定", new DialogInterface.OnClickListener() {
     
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
     
                        
                    }
                })
                .create();
        alertDialog.show();
安卓开发学习——day8_第2张图片

更多

总结:

你可能感兴趣的:(安卓学习)