當前位置:首頁 » 安卓系統 » android開發後台

android開發後台

發布時間: 2022-12-15 23:20:12

『壹』 android開發,怎樣才能讓後台服務不被各種一鍵清理關掉

1、在配置文件AndroidManifest.xml應用的application節點添加android:persistent=」true」,保證該應用程序所在進程不會被LMK殺死。提高軟體運行的優先順序。註:只設置android:persistent=」true」仍然會被殺死的情況。

2、在activity的 onStop()執行時,啟用一個像素的懸浮窗防止應用被清理,代碼如下:

java">Buttonbutton=newButton(getApplicationContext());
WindowManagerwm=(WindowManager)getApplicationContext()
.getSystemService(Context.WINDOW_SERVICE);
WindowManager.LayoutParamswmParams=newWindowManager.LayoutParams();

/**
*以下都是WindowManager.LayoutParams的相關屬性具體用途請參考SDK文檔
*/
wmParams.type=LayoutParams.TYPE_PHONE;//這里是關鍵,你也可以試試2003
wmParams.format=PixelFormat.RGBA_8888;//設置圖片格式,效果為背景透明
/**
*這里的flags也很關鍵代碼實際是wmParams.flags|=FLAG_NOT_FOCUSABLE;
*40的由來是wmParams的默認屬性(32)+FLAG_NOT_FOCUSABLE(8)
*/
wmParams.flags=LayoutParams.FLAG_NOT_TOUCH_MODAL
|LayoutParams.FLAG_NOT_FOCUSABLE
|LayoutParams.FLAG_NOT_TOUCHABLE;
wmParams.width=1;
wmParams.height=1;
wm.addView(button,wmParams);//創建View

『貳』 安卓開發後台是什麼意思啊要學什麼

後台指的是提供數據的伺服器端代碼,有php,javaweb,.net等

『叄』 安卓後台進程限制標準是多少

安卓後台進程限制標準是2個。很多手機軟體關閉之後,會變為後台運行。同時手機程序運行過多也會造成手機死機等現象,限制後台程序運行數量很有必要。開發者模式中的相關選項是供技術人員進行機器調試用,一般是無法自定義保存,改動開發者選項中的相關設置可能會造成手機的某些功能無法正常工作,謹慎進行操作。

(3)android開發後台擴展閱讀

後台運行的進程是那些隱含執行的程序,比如現在正在使用QQ,而之前已經打開了微信,可是沒有退出,那麼現在微信就是在後台運行的程序。進行數量的限制可以幫助節省RAM的空間,提升手機運行速度。

啟動常式時,Oracle不僅會分配SGA,還會啟動後台進程;關閉常式時,Oracle不僅會釋放SGA所佔用的內存空間,而且還會釋放後台進程所佔用的Cpu和內存資源。Oracle提供了很多後台進程,在這介紹常用後台進程SMON、PMON、DBWR、LGWR、CKPT、ARCH。

『肆』 如何用java編寫android後台程序

使用J2EE技術或者叫Java Web技術開發一個Web伺服器,伺服器返回Json數據,android客戶端解析json數據,使用http協議和伺服器通信,android有相應模塊和API。

首先樓主得懂Java後台也就是Java EE,用Servlet搭建Web服務,Serlvet映射一個URL,Android請求這個URL,Servlet處理請求,然後就是Java編程,Web分層、JDBC等技術。伺服器返回標準的JSON輕量數據(就是純文本),Android來解析。

具體技術:
(1)Java Servlet作為Web服務的處理入口;
(2)Java編程編寫業務處理程序;
(3)JDBC訪問資料庫
(4)Android端的HTTP模塊,API;
(5)Android端解析JSON數據;
(6)Servlet或者Java端生成JSON數據;

等樓主技術強了,就可以接觸各種框架、EJB技術了。Spring、Spring MVC、Struts、Hibernate,甚至NOSQL、分布式、負載、node.js、模板技術等等。

『伍』 安卓開發app,後台需要什麼技術

說難確實很難,說簡單也很簡單。
難:比如簡單的注冊,手機注冊?郵箱注冊?驗證碼總要有吧,那幾涉及第三方的信息發送。還有注冊登錄,必須得有找回密碼功能吧,又是一堆。
做個APP包含:安卓版、蘋果版、管理後台、手機助手、伺服器部署,這幾個東西語言都不一樣,得一個一個開發。所以費用十萬起步,周期2個月左右。
簡單:找HiShop開發,不需要編程,自己隨便搞搞就能做一個。
類似58同城、京東、天貓、美團等的電商、商城、同城服務APP,今日頭條、社交、貼吧等上面都有模板。不需要編程技術,自己就可以搞定。而且這些模板不是死的,都可以修改。
HIShop支持五合一自動生成,安卓版APP、蘋果版APP、管理後台、手機管理助手、伺服器,自動配置生成,不用逐一開發,資金成本、時間成本的節省可想而知。所以費用不到一萬。
費用不到外包價的10%,周期也短。
鏈接如下,題主自己去看吧:

『陸』 android編程如何讓程序後台運行

通過android的四大組件之一的service來實現後台運行,類似Windows上的服務。

1、Android上的service有兩種啟動方式(或者說兩種方法實現service)

①startService()和bindService() ,有區別。

2、簡單的使用Service步驟(startService()):

①建立service的子類,重寫onStartCommand()。(當服務啟動的時候會調用該方法)

{

@Override
publicvoidonCreate(){
}

//這個函數在低版本中使用的是onStart(),onStart()在高版本中已經過時了。
@Override
publicintonStartCommand(Intentintent,intflags,intstartId){
}

@Override
publicvoidonDestroy(){
}
}

②在清單文件中聲明Service組件

<application>
<serviceandroid:name="HelloService">
<intent-fiter>
<actionandroid:name="xxxxx">
</intent-fiter>
</service>
</application>

③在Activity等調用startService(intent);啟動你的Service

Intentintent=newIntent("xxxxx");
//還可以使用Intentintent=newIntent(activity.this,HelloService.class);
startService(intent);

註:兩種方法各有不同,具體請看官方API:

http://developer.android.com/guide/components/services.html

『柒』 Android 啟動後台運行程序(Service)

Android開發中,當需要創建在後台運行的程序的時候,就要使用到Service。Service 可以分為有無限生命和有限生命兩種。特別需要注意的是Service跟Activities是不同的(簡單來說可以理解為後台與前台的區別),例如,如果需要使用Service的話,需要調用startService(),從而利用startService()去調用Service中的OnCreate()和onStart()方法來啟動一個後台的Service。 啟動一個Service的過程如下:context.startService() ->onCreate()- >onStart()->Service running其中onCreate()可以進行一些服務的初始化工作,onStart()則啟動服務。 停止一個Service的過程如下:context.stopService() | ->onDestroy() ->Service stop 接下來的實例是一個利用後台服務播放音樂的小例子,點擊start運行服務,點擊stop停止服務。ServicesDemo.java(是一個Activity)

package com.android.myservice;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class ServiceDemo extends Activity implements OnClickListener {
private static final String TAG = "ServiceDemo";
Button buttonStart, buttonStop;

}

除此之外還要在Manifest裡面聲明服務:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android=" http://schemas.android.com/apk/res/android "
package="com.android.myservice">
<application android:label="@string/app_name">
<activity android:name=".ServiceDemo" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<service android:enabled="true" android:name=".MyService"/>
</application>
</manifest>

定義Service(MyService.java

package com.android.myservice;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;

public class MyService extends Service {
private static final String TAG = "MyService";
MediaPlayer player;

}

layout文件夾中是main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=" http://schemas.android.com/apk/res/android "
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/services_demo" android:gravity="center" android:textSize="20sp" android:padding="20dp"/>
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/buttonStart" android:text="@string/start"></Button>
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/stop" android:id="@+id/buttonStop"></Button>
</LinearLayout>

values 文件夾中是strings.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>
<string name="start">Start</string>
<string name="stop">Stop</string>
<string name="services_demo">Service Demo</string>
</resources>

『捌』 安卓開發:如何得知當前activity是被壓入後台,還是跳轉到新的activity

最近學習安卓開發activity的生命周期,對單個活動的生命周期較為熟悉。此時師兄拋出問題,當一個activity進入 onStop() 時,如何得知時由於用戶點擊了主頁鍵,還是由於進入了另一個本程序的activity?

查閱網路資源後,得知可以通過安卓本身的多種方法來判斷。不過某些方法的使用需要獲取用戶授權,或者需要較高版本的安卓系統。不過本文主要介紹通過activity本身的生命周期回調函數來判斷。

由於設計兩個activity的跳轉,所以我們應該去考慮多個activity的生命周期回調函數順序。查閱並測試可知,當進行activity跳轉時,先執行原來activity的 onPause() 和,然後執行第二個activity的 onCreate() 、 onStart() 、 onResume() ,再執行第一個activity的 onStop 。如圖所示,紅色是第一個activity的回調函數執行,藍色是第二個。

我們可以利用這個特點,通過一個static變數來記錄當前run的activity數量,當這個數量為0的時候,即程序被壓入後台,當這個數量不為0,則表明當前執行了一個跳轉操作。

首先新建一個 BaseActivity 類,聲明一個static變數,讓別的activity全部繼承。並在 onStart() 和 onStop() 中修改 count 。

創建 MainActivity 類,繼承自 BaseActivity 類,同時修改 onStop() ,檢查 count 的值,判斷此次導致 onStop() 的原因。我在這個activity中添加了一個button用於跳轉到第二個activity。

這個類很簡單,沒有什麼功能,只是跳轉過來後,執行基類的 onCreate() 方法。

至此,我們便實現了通過activity生命周期回調函數判斷是否被壓入後台。不過,後來學長針對我的這種方式提出了漏洞——當引用外部SDK,且外部SDK中可以彈出未繼承我們自定義的base基類的activity,那麼怎麼處理這種情況呢?這里就要用到安卓SDK提供的全局生命周期類了——Application.,這里我們之後再談。

『玖』 盤點im即時通訊開發中Android後台保活方案

對於IM應用和消息推送服務的開發者來說,在Android機型上的後台保活是個相當頭疼的問題。

老闆一句:「為什麼微信、QQ能收到消息,而你寫的APP卻不行?」,直接讓人崩潰,話說老闆你這APP要是整成微信、APP那麼牛,直接進手機廠商白名單,還要程序員在這瞎忙活?

好了,抱怨歸抱怨,活還得干,不然靠誰養活廣大苦逼的程序員?

正因為Android系統版本的差異,也導致了各種保活黑科技的運行效果大相徑庭,所以本文正好藉此機會,盤點一下當前主流(截止2019年前)的保活黑科技在市面上各版本Android手機上的運行效果,希望能給大家提供一些客觀的參考。

其實Android端APP搞保活的目的倒不是為了干什麼見不得人的壞事(但不排除動機不純的開發者),主要是像IM即時通訊應用和資訊類應用等需要搞後台消息推送、運動類應用需要在後台實時監測用戶的運動數據等,因為現在越來越多的手機廠商為了省電策略考慮,基本上如果你的應用沒有被加入白名單,一旦處於後台就會被系統限制甚至幹掉,但使用APP的用戶才不聽你這些解釋——反正「我」就要你的APP能如期正常運行,開發者也是不得已而為之。

以消息推送為例,當APP處於後台或關閉時,消息推送對於某些應用來說非常有用,比如:

    1)IM即時通訊聊天應用:聊天消息通知、音視頻聊天呼叫等,典型代表有:微信、QQ、易信、米聊、釘釘、Whatsup、Line;

    2)新聞資訊應用:最新資訊通知等,典型代表有:網易新聞客戶端、騰訊新聞客戶端;

    3)SNS社交應用:轉發/關注/贊等通知,典型代表有:微博、知乎;

    4)郵箱客戶端:新郵件通知等,典型代表有:QQ郵箱客戶端、Foxmail客戶端、網易郵箱大師;

    5)金融支付應用:收款通知、轉賬通知等,典型代表有:支付寶、各大銀行的手機銀行等;

      .... ....

在上述的各種應用中,尤其對於用戶接觸最多、最平常的IM聊天應用或新聞資訊來說,保活和消息推送簡直事關APP的「生死」,消息推送這種能力已經被越來越多的APP作為基礎能力之一,因為移動互聯網時代下,用戶的「全時在線」能力非常誘人和強大,能隨時隨地即時地將各種重要信息推送給用戶,無疑是非常有意義的。

題外話:實際上,對於後台消息推送能力,Android原版系統早就內置了系統級推送服務(跟iOS上的APNs服務是一個東西),它就是GCM服務(現在升級為FCM了),但眾所周之的原因,谷哥的服務在國內都是用不了的(你懂的)——無奈啊!

主要黑科技方案有:

    1)監聽廣播:監聽全局的靜態廣播,比如時間更新的廣播、開機廣播、解鎖屏、網路狀態、解鎖加鎖亮屏暗屏(3.1版本),高版本需要應用開機後運行一次才能監聽這些系統廣播,目前此方案失效。可以更換思路,做APP啟動後的保活(監聽廣播啟動保活的前台服務);

    2)定時器、JobScheler:假如應用被系統殺死,那麼定時器則失效,此方案失效。JobService在5.0,5.1,6.0作用很大,7.0時候有一定影響(可以在電源管理中給APP授權);

    3)雙進程(NDK方式Fork子進程)、雙Service守護:高版本已失效,5.0起系統回收策略改成進程組。雙Service方案也改成了應用被殺,任何後台Service無法正常狀態運行;

    4)提高Service優先順序:只能一定程度上緩解Service被立馬回收。 即時通訊聊天軟體app開發可以咨詢蔚可雲。

針對上述方案,具體的實現思路,通常是這樣的:

    1)進程拉活:AIDL方式單進程、雙進程方式保活Service(最極端的例子就是推送廠商的互相喚醒復活:極光、友盟、以及各大廠商的推送,同派系APP廣播互相喚醒:比如今日頭條系、阿里系);

    2)降低oom_adj的值:常駐通知欄(可通過啟動另外一個服務關閉Notification,不對oom_adj值有影響)、使用」1像素「的Activity覆蓋在getWindow()的view上(據傳某不可言說的IM大廠用過這個方案,雖然他們從未正面承認過)、循環播放無聲音頻(黑科技,7.0下殺不掉);

    3)監聽鎖屏廣播:使Activity始終保持前台;

    4)使用自定義鎖屏界面:覆蓋了系統鎖屏界面;

    5)創建子進程:通過android:process屬性來為Service創建一個進程;

    6)白名單:跳轉到系統白名單界面讓用戶自己添加app進入白名單。

使用AIDL綁定方式新建2個Service優先順序(防止服務同時被系統殺死)不一樣的守護進程互相拉起對方,並在每一個守護進程的ServiceConnection的綁定回調里判斷保活Service是否需要重新拉起和對守護線程進行重新綁定。

後台播放音樂這種保活方法,親身經歷過:

記得當時用的是某運動記步APP,它為了保活就是這么乾的。之所以被我發現,是因為在我的Android手機上,每次打開這個APP居然總能莫名其妙聽到若有若無的環境噪音樣的聲音,尤其安靜的場所下更明顯。我個人估計這個APP里用的保活音頻文件,很可能就是程序員在簡陋的條件下隨手自已錄制的,雖然也是不得以為之,但做法確實是有點粗糙。

總結一下,以上方案在當前主流手機上的運行效果

【1】雙進程守護方案(基於onStartCommand() return START_STICKY):

    1)原生5.0、5.1:原生任務欄滑動清理app,Service會被殺掉,然後被拉起,接著一直存活;

    2)金立F100(5.1):一鍵清理直接殺掉整個app,包括雙守護進程。不手動清理情況下,經測試能鎖屏存活至少40分鍾;

    3)華為暢享5x(6.0):一鍵清理直接殺掉整個app,包括雙守護進程。不手動清理下,鎖屏只存活10s。結論:雙進程守護方案失效;

    4)美圖m8s(7.1.1):一鍵清理直接殺掉整個app,包括雙守護進程。不清理情況下,鎖屏會有被殺過程(9分鍾左右被殺),之後重新復活,之後不斷被幹掉然後又重新復活。結論:雙守護進程可在後台不斷拉起Service;

    5)原生7.0:任務欄清除APP後,Service存活。使用此方案後Service照樣存活;

    6)LG V30+(7.1.2):不加雙進程守護的時候,一鍵清理無法殺掉服務。加了此方案之後也不能殺掉服務,鎖屏存活(測試觀察大於50分鍾);

    7)小米8(8.1):一鍵清理直接幹掉app並且包括雙守護進程。不清理情況下,不加守護進程方案與加守護進程方案Service會一直存活,12分鍾左右closed。結論:此方案沒有起作用。

▲ 結論:除了華為此方案無效以及未更改底層的廠商不起作用外(START_STICKY欄位就可以保持Service不被殺)。此方案可以與其他方案混合使用。

【2】監聽鎖屏廣播打開1像素Activity(基於onStartCommand() return START_STICKY):

    1)原生5.0、5.1:鎖屏後3s服務被幹掉然後重啟(START_STICKY欄位起作用);

    2)華為暢享5x(6.0):鎖屏只存活4s。結論:方案失效;

    3)美圖m8s(7.1.1):同原生5.0;

    4)原生7.0:同美圖m8s;

    5)LG V30+(7.1.2):鎖屏後情況跟不加情況一致,服務一致保持運行,結論:此方案不起作用;

    6)小米8(8.1):關屏過2s之後app全部被幹掉。結論:此方案沒有起作用。

▲ 結論:此方案無效果。

【3】故意在後台播放無聲的音樂(基於onStartCommand() return START_STICKY):

    1)原生5.0、5.1:鎖屏後3s服務被幹掉然後重啟(START_STICKY欄位起作用);

    2)華為暢享5x(6.0):一鍵清理後服務依然存活,需要單獨清理才可殺掉服務,鎖屏8分鍾後依然存活。結論:此方案適用;

    3)美圖m8s(7.1.1):同5.0;

    4)原生7.0:任務管理器中關閉APP後服務被幹掉,大概過3s會重新復活(同僅START_STICKY欄位模式)。結論:看不出此方案有沒有其作用;

    5)LG V30+(7.1.2):使用此方案前後效果一致。結論:此方案不起作用;

    6)小米8(8.1):一鍵清理可以殺掉服務。鎖屏後保活超過20分鍾。

▲ 結論:成功對華為手機保活。小米8下也成功突破20分鍾。

【4】使用JobScheler喚醒Service(基於onStartCommand() return START_STICKY):

    1)原生5.0、5.1:任務管理器中幹掉APP,服務會在周期時間後重新啟動。結論:此方案起作用;

    2)華為暢享5x(6.0):一鍵清理直接殺掉APP,過12s左右會自動重啟服務,JobScheler起作用;

    3)美圖m8s(7.1.1):一鍵清理直接殺掉APP,無法自動重啟;

    4)原生7.0:同美圖m8s(7.1.1);

    5)小米8(8.1):同美圖m8s(7.1.1)。

▲ 結論:只對5.0,5.1、6.0起作用。

【5】混合使用的效果,並且在通知欄彈出通知:

    1)原生5.0、5.1:任務管理器中幹掉APP,服務會在周期時間後重新啟動。鎖屏超過11分鍾存活;

    2)華為暢享5x(6.0):一鍵清理後服務依然存活,需要單獨清理才可殺掉服務。結論:方案適用;

    3)美圖m8s(7.1.1):一鍵清理APP會被殺掉。正常情況下鎖屏後服務依然存活;

    4)原生7.0:任務管理器中關閉APP後服務被幹掉,過2s會重新復活;

    5)小米8(8.1):一鍵清理可以殺掉服務,鎖屏下後台保活時間超過38分鍾;

    6)榮耀10(8.0):一鍵清理殺掉服務,鎖屏下後台保活時間超過23分鍾。

『拾』 Android開發團隊或將干預「殺後台」現象,意味著什麼

意味著各應用將更公平的競爭。為什麼這樣說呢?因為中國的安卓系統並不是原生的安卓系統,運行在大家手機上的安卓系統是經過各廠商在原生系統上定製修改而來的。

而國內手機廠商,為了解決原生系統耗電,卡頓,內存消耗等問題。往往會通過殺後台應用程序的進程來解決。

但大家常用的比如微信等頭部應用,因為使用頻繁,用戶體量大,被各手機廠商默認加入了白名單,從而不會被殺死。

但其他應用就不會了,如支付寶如果要開啟收款的語音提示功能,就要按照支付寶的引導,一步步開啟支付寶的應用白名單。操作繁瑣,一般上年紀的人基本完成不了這么復雜的操作。

而且殺後台嚴重,對中小開發者十分不利,因為中小開發者的應用不會被默認加入白名單,就會在後台頻繁殺死,即使想支付寶那樣引導用戶開啟白名單,但這中間的步驟也令人望而卻步。

這對中小開發者是不公平的。所以干預殺後台的行為,有利於公平競爭,也有利於用戶知道,到底是開發者的原因,還是系統的原因,使得我想要常駐後台的應用被殺死了。

熱點內容
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:727
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:797
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:504
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:366
ef資料庫查詢數據 發布:2025-05-18 03:29:36 瀏覽:668
百度雲下載文件夾 發布:2025-05-18 03:17:33 瀏覽:674
php雲開發 發布:2025-05-18 03:12:41 瀏覽:447
sql語句顯示表 發布:2025-05-18 03:12:30 瀏覽:690
資料庫系統的例子 發布:2025-05-18 03:02:42 瀏覽:191
數字化儲存與編譯是什麼 發布:2025-05-18 02:56:55 瀏覽:217