1-AIII-Service實現開屏跳轉到指定Activity

普通Service特性

1.startService方法啓動,不關閉,則一直運行,即便退出了當前Activity
2.基於此能夠實現音樂播放器的後臺播放
3.基於此結合廣播接收者能夠實現開屏跳轉到指定Activity、任意位置鎖屏監聽
3-1.在服務開啓時註冊開關屏的廣播接收者,在服務結束時注消開關屏的廣播接收者
3-2.每次開屏跳轉到指定頁面java

9414344-f9e9ef1bb14dfb72.gif
Service實現開屏跳轉到指定Activity.gif
1.ScreenService.java
public class ScreenService extends Service {
    private static final String TAG = "ScreenService";
    private ScreenReceiver receiver;

    @Override
    public IBinder onBind(Intent intent) {
        Log.i(TAG, "onBind");
        return null;
    }

    @Override//當服務第一次啓動的時候調用
    public void onCreate() {//在這個方法裏面註冊廣播接收者
        receiver = new ScreenReceiver();//[1]獲取ScreenReceiver實例
        IntentFilter filter = new IntentFilter(); //[2]建立IntentFilter對象
        filter.addAction("android.intent.action.SCREEN_OFF");//[3]添加註冊的事件
        filter.addAction("android.intent.action.SCREEN_ON");
        registerReceiver(receiver, filter);//[4]經過代碼的方式註冊
        super.onCreate();
    }

    @Override//當服務銷燬的時候調用
    public void onDestroy() {
        unregisterReceiver(receiver);//當actvivity銷燬的時候  取消註冊廣播接收者
        super.onDestroy();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.i(TAG, "onStartCommand");
        return super.onStartCommand(intent, flags, startId);
    }
}
2.開關屏的廣播接收者:ScreenReceiver
public class ScreenReceiver extends BroadcastReceiver {

    private static final String TAG = "ScreenReceiver";
    @Override
    public void onReceive(Context context, Intent intent) {
        //[1]獲取到當前廣播的事件類型
        String action = intent.getAction();
        //[2]對當前廣播事件類型作一個判斷
        if ("android.intent.action.SCREEN_OFF".equals(action)) {
            Log.i(TAG, "屏幕鎖屏了");
        } else if ("android.intent.action.SCREEN_ON".equals(action)) {
            //每次開屏跳轉到指定頁面
            context.startActivity(new Intent(context, MainActivity.class));
            Log.i(TAG, "屏幕解鎖了");
        }
    }
}
3.註冊服務:app/src/main/AndroidManifest.xml
<service android:name=".base.ScreenService"/>
4.Activity中開啓服務:
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        startService(new Intent(this, ScreenService.class));
    }
}

onCreate==>onStartCommand
其中onCreate只會執行1次每次啓動都會執行onStartCommandandroid


後記、

1.聲明:

[1]本文由張風捷特烈原創,轉載請註明
[2]歡迎廣大編程愛好者共同交流
[3]我的能力有限,若有不正之處歡迎你們批評指證,一定虛心改正
[4]你的喜歡與支持將是我最大的動力git

2.鏈接傳送門:

更多安卓技術歡迎訪問:安卓技術棧
個人github地址:歡迎star
簡書首發,騰訊雲+社區同步更新
張風捷特烈我的網站,編程筆記請訪問:http://www.toly1994.comgithub

3.聯繫我

QQ:1981462002
郵箱:1981462002@qq.com
微信:zdl1994328編程

4.歡迎關注個人微信公衆號,最新精彩文章,及時送達:
9414344-c474349cd3bd4b82.jpg
公衆號.jpg
相關文章
相關標籤/搜索