Android:永久关闭应用时运行代码

时间:2017-08-21 17:52:55

标签: android android-activity android-service

因此,当我的应用程序关闭时,我需要调用我想要的代码。不仅在它被发送到背景或表面被破坏时。我该怎么做呢?我可以在SurfaceViewActivity类中覆盖一种方法吗?

新修改 - 当前BackgroundService课程:

public class BackgroundService extends Service {
    private String savedString;

    public void onCreate() {
        System.out.println("Service created");
        super.onCreate();
    }

    public int onStartCommand(Intent intent, int flags, int startId) {
        System.out.println("start command: ");
        savedString = intent.getStringExtra("myString);
        return super.onStartCommand(intent, flags, startId);
    }

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

    public void onTaskRemoved(Intent rootIntent) {
        System.out.println("the saved string was: " + savedString);
        super.onTaskRemoved(rootIntent);
    }

    public void onDestroy() {
         System.out.println("destroyed service");
         super.onDestroy();
    }
}

然后我在其他课堂上有这个:

 Intent serviceIntent = new Intent(activity.getApplicationContext(), BackgroundService.class);
 serviceIntent.putExtra("myString", "this is my saved string");
 activity.startService(serviceIntent);

2 个答案:

答案 0 :(得分:1)

您需要添加后台服务

public class BackgroundServices  extends Service
{


@Override
public void onCreate() {
    Toast.makeText(this, "start", Toast.LENGTH_SHORT).show();
    super.onCreate();
}



@Override
public int onStartCommand(Intent intent, int flags, int startId) {



}

@Nullable
@Override
public IBinder onBind(Intent intent) {

    return null;
}

@Override
public void onDestroy() {

    super.onDestroy();
}
}

然后在你的活动中。您想要触发此服务的地方

使用

 startService(new Intent(getBaseContext(), BackgroundServices.class));

在你的情况下,它将调用该活动的onDestory函数

答案 1 :(得分:0)

  

当流程终止时是的

一般情况下这是不可能的。当流程终止时,您的应用程序中没有任何内容被调用。

  

例如,当您打开正在运行的应用程序屏幕时,请轻扫该应用程序以阻止其运行

这是一项任务删除。 可能导致您的流程终止,并且您可以通过多种方式终止与任务删除无关的流程。

要检测任务删除,请覆盖onTaskRemoved()

中的Service