android app 服务会被自动关闭怎么处理

android app 服务会被自动关闭怎么处理,第1张

这个可不好说了,具体关闭程序是由Framework决定的。一般按照如下规律。1、内存紧张、先关闭没有SERVICE、ACTIVITY堆栈时间最长的。2、内存紧张、有SERVICE,不活动时间最长的。占用内存比较大的。3、内存紧张、有大内存程序切换到前台,释放内存依旧不够的。依次杀死不活动时间最长的。4、内存紧张、有大内存程序切换到前台,释放内存依旧不够的。杀死带有android:persistent="true"标记的。(备注Phone模块有此标记,所以最难杀)这个是我的经验。

Android Studio中,随时随地的退出程序(记得导入相应的包,可以设置自动导入所需的包的,下面的代码还没有导入包的部分):

①新建一个 ActivityCollector 类,作为活动管理器,代码如下所示:

public class ActivityCollector {

public static List<Activity>activities = new ArrayList<>()

public static void addActivity(Activity activity) {

activities.add(activity)

}

public static void removeActivity(Activity activity) {

activities.remove(activity)

}

public static void finishAll() {

for (Activity activity : activities)

{

if(!activity.isFinishing())

{

activity.finish()

}

}

activities.clear()

//以下是杀死当前程序进程的代码,保证程序彻底退出。

android.os.Process.killProcess(android.os.Process.myPid())

}

}

②再新建一个类BaseActivity,并让所有活动继承这个类,也就是其他的全部活动都改为extends BaseActivity,而不是原来的extends AppCompatActivity。

public class BaseActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState)

Log.d("BaseActivity", getClass().getClass().getSimpleName())

ActivityCollector.addActivity(this)

}

@Override

protected void onDestroy() {

super.onDestroy()

ActivityCollector.removeActivity(this)

}

}

③在你想要退出程序的页面(Activity)的setContentView(R.layout.*****)下面加上如下代码,从而实现点击一个按钮退出整个程序。

Button button3 = (Button) findViewById(R.id.*****)

button3.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

ActivityCollector.finishAll()

}

})

//*号部分看具体情况而定

创建 Runnable 对象执行退出登录逻辑,使用 Handler.postDelayed 开始计时,触摸事件监听中和 Activity 销毁时使用 Handler.removeCallbacks 取消计时。Handler 从主线程获得,可以直接在 Runnable 中 *** 作 View 对象。

能不开线程还是不开线程的好。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12169159.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存