Google日历或Instagram如何使他们的应用程序始终启动并运行,即使在强制停止后也是如此

看起来强制停止应该阻止应用程序运行,甚至禁用所有应用程序的警报。然而,我发现即使在强制停止后,Google日历中的通知仍然显示良好,并且我一直看到Instagram应用程序正在运行,即使我杀死它,它也只是自动重新启动,它再次出现。

那么,有什么方法可以使应用程序不断运行呢?我正在使用提醒功能开发应用程序,并且需要在特定时间显示通知,无论之前如何关闭应用程序。


答案 1

如果在应用程序类中启动服务,则即使用户终止或强制停止任务管理器,服务也将始终运行,该服务将再次运行。

要专门在 Android 工作室中创建服务,请右键单击项目资源管理器中的应用,然后单击“新建>服务>服务”

创建服务:

public class ServiceName extends Service {

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

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
      // do your jobs here
      return super.onStartCommand(intent, flags, startId);
        }
    } 

现在创建一个应用程序类并在应用程序类中启动服务

public class App extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        startService(new Intent(this, ServiceName.class));
    }
}  

答案 2

我看到那里有两种选择。

第一个是通过 Thread.setDefaultUncaughtExceptionHandler() 处理 Java 附带的任何异常,它不是来自 Android SDK。

简明扼要,请使自定义类实现,并将其注册为应用程序中任何异常的侦听器。一旦发生崩溃,就会触发此回调,您可以从中延迟作业在不久的将来发生(例如,生成以在50ms内再次启动应用程序)。ApplicationUncaughtExceptionHandlerAlarmManager


第二个选项是您可以在不同的进程中启动组件。来自文档

安卓:进程

要在其中运行服务的进程的名称。通常,应用程序的所有组件都在为应用程序创建的默认进程中运行。它与应用程序包具有相同的名称。元素的 process 属性可以为所有组件设置不同的默认值。但是组件可以使用其自己的进程属性覆盖默认值,从而允许您将应用程序分散到多个进程中。

在不同进程上发生的崩溃不会使托管 UI 的进程崩溃。


推荐