Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android實現後台長期監聽時間變化

Android實現後台長期監聽時間變化

編輯:關於Android編程

1.首先我們的目的是長期監聽時間變化,其實應用程序退出。

通過了解我們知道注冊ACTION_TIME_TICK廣播接收器可以監聽系統事件改變,但是

查看SDK發現ACTION_TIME_TICK廣播事件只能動態注冊:

Broadcast Action: The current time has changed. Sent every minute. You can not receive this through components declared in manifests, only by exlicitly registering for it with Context.registerReceiver().

所以要想實現長期監聽時間變化,就需要借助後台服務的幫助了

2.解決方法(3步驟):

(1)在某個時間啟動後台服務

package com.example.broadcastreceiverofdatachange;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;

public class MainActivity extends Activity {

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

//啟動後台服務
Intent service=new Intent(this, TimeService.class);
startService(service);

}

}

(2)在服務組件中動態注冊廣播事件

package com.example.broadcastreceiverofdatachange;

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

public class TimeService extends Service {

@Override
public IBinder onBind(Intent intent) {

return null;
}

@Override
public void onCreate() {

super.onCreate();
Log.i("liujun", "後台進程被創建。。。");

//服務啟動廣播接收器,使得廣播接收器可以在程序退出後在後天繼續執行,接收系統時間變更廣播事件
DataChangeReceiver receiver=new DataChangeReceiver();
registerReceiver(receiver,new IntentFilter(Intent.ACTION_TIME_TICK));

}


@Override
public int onStartCommand(Intent intent, int flags, int startId) {

Log.i("liujun", "後台進程。。。");
return super.onStartCommand(intent, flags, startId);

}

@Override
public void onDestroy() {

Log.i("liujun", "後台進程被銷毀了。。。");
super.onDestroy();
}

}

(3)在廣播接收器組件中操作

package com.example.broadcastreceiverofdatachange;


import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;


public class DataChangeReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

Log.i("liujun", "時間發生變化。。。");

}


}


//至此長期實現後台監聽時間變化Demo就完成了。。。





  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved