1. 程式人生 > 其它 >安卓開發學習——day8

安卓開發學習——day8

技術標籤:安卓學習

文章目錄

寫在前面:

今天要實現的是按住按鈕,啟動服務,耗時10秒,傳送廣播,然後彈出彈窗,這涉及到服務,廣播,彈窗。

1.服務

<font color=#999AAA > 1、onCreate():當Service第一次被建立後立即呼叫該方法,該方法在Service的生命週期裡只被呼叫一次!
2、onDestory():當Service被關閉時呼叫該方法,該方法只被呼叫一次!
3、onStartCommand():當Service被呼叫時,呼叫該方法。該方法可被重複呼叫,並且不會建立新的Service物件,而是複用前面產生的Service物件。
4、onBind():這是Service必須實現的方法,該方法會返回一個IBinder物件,APP通過該物件與Service元件進行通訊。
5、onUnBind():當該Service繫結的所有客戶端都斷開時呼叫該方法。</font>

(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的應用程式才能啟動或繫結該服務。

效果

在這裡插入圖片描述

更多

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();

更多

總結: