當前位置:首頁 » 安卓系統 » android定時服務

android定時服務

發布時間: 2023-05-24 02:02:26

⑴ android 實現本地定時推送(兼容)

首先寫幾點感悟:

鬧鍾類,目前只用過 AlarmManager.RTC_WAKEUP 類型,這個是精確定時,很多博客都提到過,不了解的可以自己查查。然後 action 用來啟動服務或者廣播, alarmId 就是 requestCode ,用來區別不同的鬧鍾。該工具類不僅僅可以用來定時通知,只要稍加改動,定時廣播、定時任務巧御、定時彈窗都是可以做的。

服務和廣播配置一個就可以了,目前我才有的是服務的配置方法

服務的配置方法:

廣播的配置方法:

由於查看的資料太多了,所以就不一一列舉了,然後提供一個測試裂坦方法肆寬桐,可以在 MainActivity 的 OnCreate 方法中調用:

⑵ Android 定時器Timer的使用

在我們Android客戶端上有時候可能有些任務不是當時就執行,而是過了一個規定的時間在執行此次任務。那麼這個時候定時顫慧器的作用就非常有用了。首先開啟一個簡單的定時器

現在我就相當於定義了拆腔一個定時器,我現在的定時器是向伺服器發送Post請求來返回數據刷新到我的界面上那麼接下來就是開啟定時器了。開啟定時器那就非常簡單了

開啟定時器特別簡單基本上一句話就搞定了
開啟定時器需要三個參數
1.就是上面所寫的你要做的事情 ,上面我寫的上向網路發送請求那麼這里就時開啟定時器請求網路
2.這個參數是你要多長時間後執行這個定時器,這里我寫的是0,那麼就是0秒後執行我的定時器。
3.這個是最重要的這就是你每次執行時間的間隔 我這里就是說每10秒向網路發送一次請求如果寫成1000就是每一秒向網路發送一次請求

如果第三個參數不寫的話那麼定時器就是幾秒後執行 那麼定時器只執行一次就不在執行了

其實定時器如果不銷毀的話是一直執行的但其實定時器如果一直執行的話那麼我們的程序根本就撐不了多長時間就會崩潰所以說定時器用完就要及時的關閉
定時器的開啟在寫Fragment或者Activity的時候我一般會寫在onStart裡面
如果銷毀的時候會寫在onStop裡面銷毀定時器也非常簡單

基本上這一句話就搞定了執行這句話說明是注銷定時器
當我們離開本界面的時候就執行這句話那麼定時器就不會在執行了當我們進入本界面在onStart執行定時器那麼就又開啟了定時器所以說這樣就寫了一個簡易版的定時器

一個簡單的定時器請求網路就完成了 HttpHolder holder = new HttpHolder(handler); 這是自己寫的網路請旅洞衫求類直接調用輸入url的伺服器地址獲得的就是伺服器發來的JSON格式的數據
在onStop裡面注銷定時器那麼每次離開本界面的時候那麼定時候就銷毀了再回到本界面的時候那麼就執行onStart裡面的開啟定時器那麼定時器就開啟了所以這樣就避免了因為定時器開啟而使程序崩潰

⑶ android怎麼設置一個定時的任務

我知道的有三種方法;
方法一:可以通過android自帶的Handler機制,裡面有new Handler().postDelayed(new Runnable(){
@Override
public void run() {
//延遲的時間到了執行
}
},延遲的時間);

方法二:可以通過java裡面的線程來寫,new Thread().sleep(延遲時間);時間到了會繼續執行;
方法三:java定時器(有很多方法)例如:
Timer timer = new Timer();
timer.schele(new TimerTask() {
public void run() {
System.out.println("-------設定要指定任務--------");
}
}, long delay,long period);
delay延遲的時間,period為多久執行一次;
個人推薦用方法一,畢竟安卓系統自帶的,並且安卓不適合加定時器,如果處理不當一直執行的話,要麼卡,要麼程序崩潰。還有發布版本可能審核不通過。

⑷ Android定時器AlarmManager

AlarmManager是Android的全局定時器。就是在指定時間做一個事情(封裝在PendingIntent)。通過PendingIntent的getActivity()、getService()或getBroadcast()來執行。
聽起來AlarmManager和Timer很類似,但是Timer有可能因為手機休眠而被殺掉服務,但是AlarmManager可以做到喚醒手機。

註:ALARM_SERVIC是context的一個常量。

以上絕對時間就是手機的時間,相對時間是相對於當前開機時間來說。例如如果是絕對時間,那麼你測試可以通過修改系統時間來提前觸發。而相對時間的使用場景是強調多久之後觸發,例如2小時後,這個時候把時間修改到2小時後也是沒用的。
註:以前還有一個POWER_OFF_WAKEUP,即使在關機後還能提醒,但是Android4.0以後就沒有了。

該方法用於設置一次性鬧鍾。第一個參數是鬧鍾類型,第二個參數是觸發時間,第三個參數是動作。

和set一樣,但是時間更精準。

重復鬧鍾,第1、2、4個參數同上,第3個參數是兩次鬧鍾的時間間隔。

和setInexactRepeating一樣,但是時間更精準。

以上四個方法時間精不精準的原因還沒有深入研究,大概是是否允許系統同時發出多個提醒,意義在於系統喚醒cpu後會把時間接近的alarm同時發出,避免重復喚醒cpu,減少電量。

取消鬧鍾。

目的:在指定時間從一個發送個廣播,收到廣播後列印log。界面如下面這樣。

布局:

廣播接收器:

MainActivity

AndroidManifest要注冊一下receiver

經過測試,以上的時間間隔intervalMillis即使設置5秒也是沒用的,因為誤差(幾十秒呢)無法避免,即使是setRepeating。所以精確是相對的。

⑸ android怎麼實現定時的操作

有時候我們會遇到定時打開某些應用的這樣一種需求。
比如最近我在使用讀者 Android版的應用的時候,每次打開應用,應用發送一定的聯網請求之後就可以給我的賬號增加一定的積分,連續登錄的次數越多,積分獎勵越多。而一旦有一天沒有登錄,積分獎勵又從最初的值開始。
為了避免某一天忘記打開應用或者應用打開後聯網需要等待一段時間,可以通過定時達人這款手機應用定時地打開其它應用。
工具/原料
Android手機(我手機目前系統版本是4.2.2)
定時達人(TimeDo)
讀者 Android應用
方法/步驟
在手機上安裝定時達人軟體
定時達人有自己的網站,相關應用在各大應用商城也有。可以通過apk進行安裝,可以從應用商店下載安裝。我是從散配google play上下載安裝的。

添加新任務
設置任務困隱——設置時間

設置任務——給任務取個名字

設置任務——添加新任務
選擇運行程序一欄

設置任務——選擇定時打開的應用程序
點擊應用程序,選擇讀者。

保存設置
這汪掘廳里需要點兩次保存,之後就回到了定時達人主頁面。

通過立即執行進行測試設置效果
單擊定時打開讀者一欄,在彈出下拉框中選擇立即執行來立即執行任務。在設置正確的情況下讀者應用被打開,通知欄會有相應通知提示。
在之前的設置步驟中,保持了默認的循環方式,即周循環,一周的每一天都選中。按照設置,每一天的指定時間都可以自動打開相應應用。

⑹ android中如何實現定時提醒

android中可以使用鬧鍾進行提醒,你只需要告知系統你想在什麼時候被提醒,然後需要一個鬧鍾的廣播接收器,當到你設置的時間時,系統會給你發送一條廣播,當你接收到廣播後你就可以做一些操作,比如啟動你的app,或者跳轉到你app中的任何一個界面。代碼如下:

//發送鬧鍾請求
Intent intent = new Intent(mContext, AlarmReceiver.class);
intent.setAction("something");
intent.setType("something");
intent.setData(Uri.EMPTY);
intent.addCategory(「something」);
intent.setClass(context, AlarmReceiver.class);
// 以上給intent設置的四個屬性是用來區分你發給系統的鬧鍾請求的,當你想取消掉之前發的鬧鍾請求,這四個屬性,必須嚴格相等,所以你需要一些比較獨特的屬性,比如伺服器返回給你的json中某些特定欄位。
//當然intent中也可以放一些你要傳遞的消息。
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, alarmCount, intent, 0);
//alarmCount是你需要記錄的鬧鍾數量,必須保證你所發的alarmCount不能相同,最後一個參數填0就可以。
AlarmManager am = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, time, pendingIntent);
//這樣鬧鍾的請求就發送出去了。time是你要被提醒的時間,單位毫秒,注意不是時間差。第一個參數提醒的需求用我給出的就可以,感興趣的朋友,可以去google一下,這方面的資料非常多,一共有種,看一下就知道區別了。
//取消鬧鍾請求
Intent intent = new Intent(mContext, AlarmReceiver.class);
intent.setAction("something");
intent.setType(something);
intent.setData(Uri.EMPTY);
intent.addCategory(something);
intent.setClass(context, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, alarmCount, intent, 0);
//alarmCount對應到你設定時的alarmCount,
AlarmManager am = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
am.cancel(pendingIntent);
//接著,你需要一個廣播接收的類:
public class AlarmReceiver extends BroadcastReceiver{

private NotificationManager manager;

@Override
public void onReceive(Context context, Intent intent) {
manager = (NotificationManager)context.getSystemService(android.content.Context.NOTIFICATION_SERVICE);
//例如這個id就是你傳過來的
String id = intent.getStringExtra("id");
//MainActivity是你點擊通知時想要跳轉的Activity
Intent playIntent = new Intent(context, MainActivity.class);
playIntent.putExtra("id", id);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 1, playIntent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setContentTitle("title").setContentText("提醒內容").setSmallIcon(R.drawable.app_icon).setDefaults(Notification.DEFAULT_ALL).setContentIntent(pendingIntent).setAutoCancel(true).setSubText("二級text");
manager.notify(1, builder.build());
}
}

⑺ android 定時器如何讓某天某個時間啟動

Android中使用AlarmManager進行定時操作,現在需要啟動多個定時器,但無論採用哪種方式後面的定時器都會將前面的定時器覆蓋掉(Android系統版本2.1),只啟動最後一個定時器,見代碼 Java code// 方式一for (int i = 0; i < 10; i ++) { ... AlarmManager am = null; am = (AlarmManager) context.getApplicationContext().getSystemService(Context.ALARM_SERVICE); ... Intent i = new Intent("xxx"); PendingIntent sender = PendingIntent.getBroadcast(context.getApplicationContext(), 0, i, PendingIntent.FLAG_UPDATE_CURRENT); ... am.setRepeating(...);}// 方式二AlarmManager am = null;am = (AlarmManager) context.getApplicationContext().getSystemService(Context.ALARM_SERVICE);for (int i = 0; i < 10; i ++) { ... Intent i = new Intent("xxx"); PendingIntent sender = PendingIntent.getBroadcast(context.getApplicationContext(), 0, i, PendingIntent.FLAG_UPDATE_CURRENT); ... am.setRepeating(...);} 請問如果要實現啟動多個定時器應該怎麼操作?Android系統的鬧鍾就是採用AlarmManager進行操作的,如何才能啟動多個定時器呢?先謝謝大家了 ------解決方案-------------------- public static PendingIntent getBroadcast(Context context, int requestCode, Intent intent, int flags) requestCode 需要是唯一的

⑻ android定時器的使用

  目前在項目中使用過的定時器主要是兩種方式:1.handler的延時任務 2.timer的定時器

  下面主要來介紹這兩種方式 定時器的用法,和遇到的坑 :
  1.handler的延時任務
  寫了一個demo,是關於hanlder發送延時消息和 取消延時消息的

  但是在實際運用的過程中,常常會出現無法移除延時消息的問題,這個問題主要是因為兩個runnable的對象不是同一個,
  當Activity進入後台運行後再轉入前台運行,removeCallbacks無法將updateThread從message queue中移除。這是為什麼呢?
  在Activity由前台轉後台過程中,線程是一直在運行的,但是當Activity轉入前台時會重新定義Runnable runnable;也就是說此時從message queue移除的runnable與原先加入message queue中的runnable並非是同一個對象。  解決方式1:如果把runnable定義為靜態的則removeCallbacks不會失效,對於靜態變數在內存中只有一個拷貝(節省內存),JVM只為靜態分配一次內存,在載入類的過程中完成靜態變數的內存分配,我們做如下修改就能解決上面的這個問題.

  解決方式2:將所有的runnable任務放到一個集合中,根據runnable的id移除相應的任務,即可以解決這個問題

2.timer的延時任務
同樣用上面的demo來說明使用方法:
要注意的是:
TimerTask運行在一個單獨的線程里,而不是UI線程。所以使用 Android timer時,注意android的單線程原則,確保線程安全。不要在TimerTask的run方法中做UI相關的操作,如:TextView.setText()等,這樣可能會導致UI線程阻塞。如果需要可以使用handler向UI線程發消息,具體處理由UI線程自己完成。在使用完Timer之後,要使用Timer的cancel方法取消Timer,否則Timer一直在運行。

  這里需要注意的是,timer的cancel方法只能執行一次,不能在調用了cancel之後再進行timer的任務執行。

參考文章:
Android 定時器實現的幾種方式和removeCallbacks失效問題詳解

Android 中Timer和TimeTask完成定時任務

⑼ 求助,Android如何定時上傳數據到伺服器

利用ftp定時上傳log到其他伺服器的方法

利用ftp定時上傳log到其他伺服器#!/bin/bash #時間的生成 Y=` date --date="-1 hour" +%Y` m=` date --date="-1 hour" +%m` d=`date --date="-1 hour" +%d` H=`date --date="-1 hour" +%H`

IPhone上傳圖片到伺服器

求助:IPhone上傳圖片到伺服器 我在網上看到 IPhone上傳到伺服器用的是PHP的web接收,地址: 我只會asp.net ,請問用ASP.net和IPhone怎麼結合實現手機端的圖片上傳到伺服器上? 求助!!! 重點在:if (move_uploaded_file($_FILES['u

android開發以上傳圖片到七牛雲緩扮孫存儲伺服器

android開發之上傳圖片到七牛雲缺激存儲伺服器 相信很多開發者會把圖片存放到七牛上,我的web站點也是吧圖片存儲到七牛上,對於以圖片為主的站點,這樣可以節省很大帶寬。 將圖片上傳到七牛伺服器的重點就是獲得上傳憑證uploadToken,直接把AccessKey和Secret放到客戶端太不安全,擾鏈容易被反編譯。所以需要在伺服器端根據AccessKey和Secret動態生成一個uploadToken,

⑽ Android怎麼定時上傳數據到伺服器

首先和伺服器建立socket 通訊,接通後進行數據傳輸,運槐而你僅僅需攔悄游要加簡銷一個定時器,到規定時間就傳輸數據,總得來說,你只需要看看socket和定時器這兩塊內容就完全足夠了

熱點內容
我的世界伺服器怎麼獲得32k亂碼棒 發布:2025-02-12 15:25:15 瀏覽:545
hadoopftp 發布:2025-02-12 15:22:23 瀏覽:752
ftp怎麼增加 發布:2025-02-12 15:21:08 瀏覽:378
改裝車載中控什麼配置 發布:2025-02-12 15:10:00 瀏覽:860
資料庫體系結構 發布:2025-02-12 15:09:48 瀏覽:691
小米賬號為什麼設置不了密碼 發布:2025-02-12 15:03:57 瀏覽:263
android訪問網路許可權 發布:2025-02-12 14:55:20 瀏覽:88
原神文件夾 發布:2025-02-12 14:50:15 瀏覽:800
c語言數字翻譯 發布:2025-02-12 14:45:54 瀏覽:498
暗區突圍為什麼顯示伺服器維修 發布:2025-02-12 14:45:53 瀏覽:247