国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android App保活的方式

這篇具有很好參考價(jià)值的文章主要介紹了Android App?;畹姆绞?。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

背景

在Android系統(tǒng)中,當(dāng)應(yīng)用程序進(jìn)入后臺(tái)或者被用戶關(guān)閉后,系統(tǒng)會(huì)自動(dòng)回收該應(yīng)用程序的資源,以達(dá)到優(yōu)化系統(tǒng)性能的目的。但是,有些應(yīng)用程序需要在后臺(tái)長(zhǎng)時(shí)間運(yùn)行,比如音樂(lè)播放器、即時(shí)通訊等,這時(shí)就需要使用一些技術(shù)手段來(lái)保持應(yīng)用程序的運(yùn)行狀態(tài),以確保應(yīng)用程序能夠正常運(yùn)行。

本文將介紹一些常用的Android App保活的方式。

一、前臺(tái)服務(wù)

前臺(tái)服務(wù)是一種比較常用的?;罘绞?,它可以將應(yīng)用程序的服務(wù)提升到前臺(tái),使得系統(tǒng)不會(huì)輕易回收該服務(wù)。在前臺(tái)服務(wù)中,可以通過(guò)Notification來(lái)顯示應(yīng)用程序的狀態(tài),以提醒用戶該應(yīng)用程序正在運(yùn)行。

在實(shí)現(xiàn)前臺(tái)服務(wù)時(shí),需要注意以下幾點(diǎn):

  1. 在服務(wù)中調(diào)用startForeground()方法將服務(wù)提升到前臺(tái),并傳入一個(gè)Notification對(duì)象。
  2. Notification對(duì)象需要設(shè)置合適的圖標(biāo)、標(biāo)題、內(nèi)容等信息,以便用戶能夠識(shí)別該服務(wù)的作用。
  3. 在服務(wù)不再需要運(yùn)行時(shí),需要調(diào)用stopForeground()方法將服務(wù)從前臺(tái)移除。

示例代碼

public class ForegroundService extends Service {
    private static final int NOTIFICATION_ID = 1;

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Notification notification = new Notification.Builder(this)
                .setContentTitle("App正在運(yùn)行")
                .setContentText("點(diǎn)擊返回App")
                .setSmallIcon(R.drawable.ic_launcher).build();
        startForeground(NOTIFICATION_ID, notification);
        return super.onStartCommand(intent, flags, startId);
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}

?在Activity中啟動(dòng)前臺(tái)Service:

 Intent intent = new Intent(this, ForegroundService.class);
 startService(intent); 

二、定時(shí)喚醒

定時(shí)喚醒是一種通過(guò)定時(shí)發(fā)送廣播來(lái)喚醒應(yīng)用程序的方式。在應(yīng)用程序進(jìn)入后臺(tái)后,可以通過(guò)AlarmManager來(lái)設(shè)置定時(shí)任務(wù),以便在一定時(shí)間后喚醒應(yīng)用程序。

在實(shí)現(xiàn)定時(shí)喚醒時(shí),需要注意以下幾點(diǎn):

  1. 在應(yīng)用程序進(jìn)入后臺(tái)時(shí),需要通過(guò)AlarmManager來(lái)設(shè)置定時(shí)任務(wù),并傳入一個(gè)PendingIntent對(duì)象。
  2. PendingIntent對(duì)象需要設(shè)置合適的Action、Category等信息,以便系統(tǒng)能夠正確地識(shí)別該P(yáng)endingIntent。
  3. 在定時(shí)任務(wù)觸發(fā)時(shí),系統(tǒng)會(huì)發(fā)送一個(gè)廣播,應(yīng)用程序需要在BroadcastReceiver中接收該廣播,并進(jìn)行相應(yīng)的處理。

示例代碼:?

public class KeepAliveReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (Intent.ACTION_SCREEN_ON.equals(action)) {
            // 屏幕亮屏 
            startKeepAliveService(context);
        } else if (Intent.ACTION_SCREEN_OFF.equals(action)) {
            // 屏幕關(guān)閉 
            stopKeepAliveService(context);
        } else if (ConnectivityManager.CONNECTIVITY_ACTION.equals(action)) {
            // 網(wǎng)絡(luò)狀態(tài)變化 
            NetworkInfo networkInfo = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
            if (networkInfo != null && networkInfo.isConnected()) {
                startKeepAliveService(context);
            } else {
                stopKeepAliveService(context);
            }
        }
    }

    private void startKeepAliveService(Context context) {
        Intent intent = new Intent(context, KeepAliveService.class);
        context.startService(intent);
    }

    private void stopKeepAliveService(Context context) {
        Intent intent = new Intent(context, KeepAliveService.class);
        context.stopService(intent);
    }
}

在AndroidManifest.xml中注冊(cè)廣播接收器:

<receiver android:name=".KeepAliveReceiver">
<intent-filter>
<action android:name="android.intent.action.SCREEN_ON"/>

<action android:name="android.intent.action.SCREEN_OFF"/>

<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>

</receiver>

三、雙進(jìn)程守護(hù)

雙進(jìn)程守護(hù)是一種通過(guò)啟動(dòng)兩個(gè)進(jìn)程來(lái)保持應(yīng)用程序的運(yùn)行狀態(tài)的方式。在應(yīng)用程序進(jìn)入后臺(tái)時(shí),可以通過(guò)啟動(dòng)一個(gè)守護(hù)進(jìn)程來(lái)保持應(yīng)用程序的運(yùn)行狀態(tài)。

在實(shí)現(xiàn)雙進(jìn)程守護(hù)時(shí),需要注意以下幾點(diǎn):

  1. 在應(yīng)用程序進(jìn)入后臺(tái)時(shí),需要啟動(dòng)一個(gè)守護(hù)進(jìn)程,并將該進(jìn)程的優(yōu)先級(jí)設(shè)置為較高。
  2. 守護(hù)進(jìn)程需要定時(shí)檢測(cè)主進(jìn)程是否存活,如果主進(jìn)程已經(jīng)被回收,則需要重新啟動(dòng)主進(jìn)程。
  3. 在主進(jìn)程中,需要通過(guò)Binder機(jī)制將主進(jìn)程和守護(hù)進(jìn)程進(jìn)行通信,以便守護(hù)進(jìn)程能夠及時(shí)檢測(cè)主進(jìn)程的狀態(tài)。

示例代碼:

主進(jìn)程:

public class MainActivity extends AppCompatActivity {

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

        startDaemonProcess();
    }

    private void startDaemonProcess() {
        Intent intent = new Intent(this, DaemonService.class);
        startService(intent);
    }
}

守護(hù)進(jìn)程:

public class DaemonService extends Service {

    private static final String TAG = "DaemonService";

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d(TAG, "onStartCommand: ");
        startForeground();
        startMainProcess();
        return super.onStartCommand(intent, flags, startId);
    }

    private void startForeground() {
        Notification notification = new Notification.Builder(this)
                .setContentTitle("App正在運(yùn)行")
                .setContentText("點(diǎn)擊返回App")
                .setSmallIcon(R.drawable.ic_launcher)
                .build();
        startForeground(1, notification);
    }

    private void startMainProcess() {
        String packageName = getPackageName();
        String className = MainActivity.class.getName();
        Intent intent = new Intent();
        intent.setClassName(packageName, className);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}

在AndroidManifest.xml中注冊(cè)守護(hù)進(jìn)程:

<service android:name=".DaemonService" android:process=":daemon" />?

四、JobScheduler

JobScheduler是一種Android系統(tǒng)提供的調(diào)度器,可以用來(lái)執(zhí)行一些延遲任務(wù)或者周期性任務(wù)。在應(yīng)用程序進(jìn)入后臺(tái)時(shí),可以通過(guò)JobScheduler來(lái)設(shè)置一個(gè)延遲任務(wù),以便在一定時(shí)間后喚醒應(yīng)用程序。

在實(shí)現(xiàn)JobScheduler時(shí),需要注意以下幾點(diǎn):

  1. 在應(yīng)用程序進(jìn)入后臺(tái)時(shí),需要通過(guò)JobScheduler來(lái)設(shè)置一個(gè)延遲任務(wù),并傳入一個(gè)JobInfo對(duì)象。
  2. JobInfo對(duì)象需要設(shè)置合適的延遲時(shí)間、執(zhí)行條件等信息,以便系統(tǒng)能夠正確地執(zhí)行該任務(wù)。
  3. 在任務(wù)觸發(fā)時(shí),系統(tǒng)會(huì)發(fā)送一個(gè)廣播,應(yīng)用程序需要在BroadcastReceiver中接收該廣播,并進(jìn)行相應(yīng)的處理。

總結(jié)

以上是Android App保活的一些常用方式,不同的應(yīng)用程序可以根據(jù)自己的需求選擇合適的方式來(lái)保持應(yīng)用程序的運(yùn)行狀態(tài)。需要注意的是,?;钸^(guò)程中需要合理使用系統(tǒng)資源,以避免對(duì)系統(tǒng)性能造成影響。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-588485.html

到了這里,關(guān)于Android App?;畹姆绞降奈恼戮徒榻B完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Android APP開(kāi)機(jī)啟動(dòng),安卓APP開(kāi)發(fā)自啟動(dòng),安卓啟動(dòng)后APP自動(dòng)啟動(dòng) Android讓程序開(kāi)機(jī)自動(dòng)運(yùn)行APP

    Android APP開(kāi)機(jī)啟動(dòng),安卓APP開(kāi)發(fā)自啟動(dòng),安卓啟動(dòng)后APP自動(dòng)啟動(dòng) Android讓程序開(kāi)機(jī)自動(dòng)運(yùn)行APP

    第一步設(shè)置獲取廣播后的業(yè)務(wù) 第二查權(quán)限給APP 理論以上兩步做完就可以了。APP也能收到廣播信息了, 但是APP沒(méi)有在桌面啟動(dòng)。 經(jīng)過(guò)再研究,發(fā)現(xiàn)要在手機(jī)再設(shè)置自動(dòng)開(kāi)啟等業(yè)務(wù),以下是小米、魅族的系統(tǒng)設(shè)置的一些內(nèi)容,其它平臺(tái)自己研究。 這里已經(jīng)顯示收到廣播信息 ?

    2024年02月06日
    瀏覽(39)
  • Android大作業(yè):安卓開(kāi)發(fā)圖書管理系統(tǒng)APP

    Android大作業(yè):安卓開(kāi)發(fā)圖書管理系統(tǒng)APP

    Android Studio開(kāi)發(fā)項(xiàng)目圖書管理系統(tǒng)項(xiàng)目視頻展示: 點(diǎn)擊進(jìn)入圖書管理系統(tǒng)項(xiàng)目視頻 現(xiàn)在是一個(gè)信息高度發(fā)達(dá)的時(shí)代,伴隨著科技的進(jìn)步,文化的汲取,人們對(duì)于圖書信息的了解與掌握也達(dá)到了一定的高度。尤其是學(xué)生對(duì)于知識(shí)的渴求更是與日俱增。圖書館作為學(xué)生學(xué)習(xí)知識(shí)的

    2024年02月07日
    瀏覽(30)
  • 基于安卓android微信小程序的旅游app系統(tǒng)

    基于安卓android微信小程序的旅游app系統(tǒng)

    隨著人民生活水平的提高,旅游業(yè)已經(jīng)越來(lái)越大眾化,而旅游業(yè)的核心是信息,不論是對(duì)旅游管理部門、對(duì)旅游企業(yè),或是對(duì)旅游者而言,有效的獲取旅游信息,都顯得特別重要.自助定制游將使旅游相關(guān)信息管理工作規(guī)范化、信息化、程序化,提供旅游景點(diǎn)、旅游線路,旅游新聞等服務(wù)

    2024年02月06日
    瀏覽(21)
  • 安卓APP證書Android簽名證書.keystore文件制作生成

    安卓APP證書Android簽名證書.keystore文件制作生成

    將app發(fā)布到應(yīng)用寶時(shí),而上傳安裝包時(shí)提示如下圖時(shí), 但您或您的團(tuán)隊(duì)從未上傳該應(yīng)用,您可以通過(guò)認(rèn)領(lǐng)功能認(rèn)領(lǐng)應(yīng)用。認(rèn)領(lǐng)成功后該應(yīng)用會(huì)自動(dòng)轉(zhuǎn)入您的賬戶下,同時(shí)保留應(yīng)用全部數(shù)據(jù),您可以在應(yīng)用管理中進(jìn)行管理。 1.點(diǎn)擊認(rèn)領(lǐng)應(yīng)用 ,確認(rèn)需認(rèn)領(lǐng)應(yīng)用的包名是否是你的

    2024年02月02日
    瀏覽(25)
  • Android安卓開(kāi)發(fā)大作業(yè)---模擬電影票小程序APP

    Android安卓開(kāi)發(fā)大作業(yè)---模擬電影票小程序APP

    完整項(xiàng)目結(jié)構(gòu): 登錄注冊(cè)UI設(shè)計(jì): 登錄成功跳轉(zhuǎn)個(gè)人信息界面: 簽到功能: 電影主頁(yè): (上下圖片可以左右滑動(dòng)查看熱映電影) 查看所有熱映電影: (可以上下滑動(dòng)) 選擇一部電影查看詳細(xì)信息: 點(diǎn)擊購(gòu)票: 選位置: (左上角會(huì)出現(xiàn)一個(gè)定位預(yù)覽界面,高度還原小程序

    2024年02月04日
    瀏覽(49)
  • 基于安卓Android的房屋租賃系統(tǒng)APP(源碼+文檔+部署+講解)

    基于安卓Android的房屋租賃系統(tǒng)APP(源碼+文檔+部署+講解)

    畢設(shè)幫助、技術(shù)解答、源碼交流 聯(lián)系方式見(jiàn)文末。 房屋租賃App設(shè)計(jì)的目的是為用戶提供房源信息、租房訂單、房源資訊等方面的平臺(tái)。 與PC端應(yīng)用程序相比,房屋租賃App的設(shè)計(jì)主要面向于房主,旨在為管理員和租客、房主提供一個(gè)房屋租賃App。租客可以通過(guò)APP及時(shí)查看房源

    2024年02月22日
    瀏覽(25)
  • Android安卓實(shí)戰(zhàn)項(xiàng)目(2)---健身UI APP(源碼在文末)

    Android安卓實(shí)戰(zhàn)項(xiàng)目(2)---健身UI APP(源碼在文末)

    1.大致瀏覽 2.功能介紹 (1)功能一 第一個(gè)界面點(diǎn)擊后可以彈出圖像,如圖: (2)功能二 界面二的控件可以通過(guò)滑動(dòng)下拉條來(lái)調(diào)解 MainActivity.java PopupActivity.java FitnessMove.java 鏈接:https://pan.baidu.com/s/1fE-Koh-VmnFOxNKF9CsQNA?pwd=jynl 提取碼:jynl 有開(kāi)發(fā)需求私信作者 15135757306

    2024年02月15日
    瀏覽(20)
  • Android實(shí)現(xiàn)App內(nèi)自動(dòng)升級(jí),適配了安卓7、8及以上版本

    Android實(shí)現(xiàn)App內(nèi)自動(dòng)升級(jí),適配了安卓7、8及以上版本

    ? ? ? ? 應(yīng)用發(fā)布后,要實(shí)現(xiàn)灰度升級(jí)控制,如果只依賴各家應(yīng)用市場(chǎng)是不夠的,還需要自己在應(yīng)用中控制升級(jí)邏輯。并且每家應(yīng)用市場(chǎng)上新審核也是一件很麻煩的事情,尤其像至簡(jiǎn)網(wǎng)格這樣的應(yīng)用,甚至沒(méi)在應(yīng)用市場(chǎng)上架,更不可能依賴它們了。所以必須要在應(yīng)用中實(shí)現(xiàn)自

    2024年02月10日
    瀏覽(25)
  • 基于安卓Android的校園點(diǎn)餐系統(tǒng)APP(源碼+文檔+部署+講解)

    基于安卓Android的校園點(diǎn)餐系統(tǒng)APP(源碼+文檔+部署+講解)

    畢設(shè)幫助、技術(shù)解答、源碼交流 聯(lián)系方式見(jiàn)文末。 使用點(diǎn)餐系統(tǒng)app相對(duì)傳統(tǒng)點(diǎn)餐管理方式具備很多優(yōu)點(diǎn):首先可以大幅提高點(diǎn)餐信息檢索,只需輸入點(diǎn)餐相關(guān)信息就能在數(shù)秒內(nèi)反饋想要的結(jié)果;其次可存儲(chǔ)大量的點(diǎn)餐信息,同時(shí)點(diǎn)餐信息安全性有更高的保障;相比紙質(zhì)文件

    2024年04月16日
    瀏覽(22)
  • 基于安卓系統(tǒng)(android)記事本APP管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    基于安卓系統(tǒng)(android)記事本APP管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    目錄 摘要 I Abstract II 1 緒論 1.1 課題來(lái)源、目的和意義 1 1.2 國(guó)內(nèi)外基本研究情況 1 2 需求分析 2.1 用戶需求 4 2.2 功能需求 4 2.3 數(shù)據(jù)庫(kù)選擇 6 2.4 性能需求 6 3 概要設(shè)計(jì) 3.1 功能概要設(shè)計(jì) 7 3.2 數(shù)據(jù)庫(kù)概要設(shè)計(jì) 13 4 詳細(xì)設(shè)計(jì) 4.1 功能設(shè)計(jì) 15 4.2 數(shù)據(jù)庫(kù)設(shè)計(jì) 30 5 系統(tǒng)功能實(shí)現(xiàn) 5.1 系統(tǒng)架

    2024年02月11日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包