APP切换到后台一段时间,再切换到前台app崩溃的解决方案

当APP在后台运行一段时间后返回前台,出现崩溃且控制台无具体异常信息。问题发生在红米2A手机,内存回收导致Activity被回收。尝试通过onsaveinstancestate()方法保存状态,项目中MainActivity继承FragmentActivity,包含两个Fragment。尽管尝试在onsaveinstancestate中保存信息,但未找到合适解决办法。
摘要由CSDN通过智能技术生成

崩溃,控制台还不打印具体的异常信息,怎么办?测试机红米2a,RAM 1G。知道是内存回收了activity,但不知道怎么解决。

在网上搜了很多文章,最后还是定位到了onsaveinstancestate();于是就各种在这上面做文章。

我的项目中一个MainActivity继承了FragmentActivity,包含了两个fragment;当第一个或第二个fragment由前台切到后台运行一段时间,再切到前台时,crash!在网上看了很多要在onsaveintancestate方法里面保存各种信息,我想我也没有需要保存的信息啊。于是看FragmentActivity里面的

onSaveInstanceState方法:

                
在安卓应用程序中,可以通过使用后台服务(Background Service)来实现让应用切换后台继续执行某些操作的功能。具体步骤如下: 1. 创建一个后台服务类,继承自Service类,并在其中实现需要后台执行的操作。 2. 在应用程序的主Activity中,启动后台服务。 3. 在后台服务中,使用startForeground方法将服务放到前台,并在通知栏上显示一个通知,这样系统就会认为你的应用程序正在前台运行,不会轻易杀死它。同时,在服务结束运行时,需要调用stopForeground方法将其移出前台。 4. 在AndroidManifest.xml文件中声明你的后台服务。 下面是一个简单的后台服务的代码示例: ```java public class MyService extends Service { private static final String TAG = "MyService"; @Override public void onCreate() { super.onCreate(); Log.i(TAG, "onCreate"); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.i(TAG, "onStartCommand"); // 在此处编写需要后台执行的代码 // 将服务放到前台并显示通知 Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID) .setSmallIcon(R.drawable.ic_launcher_foreground) .setContentTitle(getText(R.string.notification_title)) .setContentText(getText(R.string.notification_message)) .setPriority(NotificationCompat.PRIORITY_LOW) .build(); startForeground(1, notification); return START_STICKY; } @Override public void onDestroy() { super.onDestroy(); Log.i(TAG, "onDestroy"); // 将服务从前台移除 stopForeground(true); } @Nullable @Override public IBinder onBind(Intent intent) { return null; } } ``` 需要注意的是,后台服务不应该长时间占用系统资源,否则会严重影响手机的性能和电池寿命。在应用程序退出时,应该及时停止后台服务。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值