当前位置:首页 » 安卓系统 » 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-17 22:53:53 浏览:19
消防防诈骗脚本 发布:2025-05-17 22:49:31 浏览:876
凯酷2021选哪个配置 发布:2025-05-17 22:46:06 浏览:659
苹果好用的解压软件 发布:2025-05-17 22:42:23 浏览:381
我的世界服务器莫名崩溃 发布:2025-05-17 22:40:57 浏览:477
我的世界utc服务器ip 发布:2025-05-17 22:36:19 浏览:740
新闻压缩要素 发布:2025-05-17 22:22:11 浏览:118
耳机没有声音怎么办安卓 发布:2025-05-17 22:16:29 浏览:583
bc8android导航 发布:2025-05-17 22:15:50 浏览:639
什么配置的车标好 发布:2025-05-17 21:41:20 浏览:203