在后台运行15分钟后完成申请

时间:2018-11-15 04:47:42

标签: java android

当用户最小化后,如何在15分钟后完成申请?

如果用户未完成退出应用程序的操作,则一段时间后应用程序网络无法正常工作后,用户将返回。为了工作,需要重新启动应用程序。

我想在应用程序进入后台然后使用计时器完成应用程序时触发。

还是如何知道应用程序何时暂停而不是活动?

应用程序的生命周期。

2 个答案:

答案 0 :(得分:2)

解决方案:

制作一个 BaseActivity ,它是所有 activity 的父级。

public class BaseActivity extends AppCompatActivity {
    private static Thread t = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

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

        if (t != null) {
            try {
                if (t.isAlive()) {
                    t.interrupt();
                    t.join();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            t = null;
        }
    }

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

        t = new Thread() {
            public void run() {
                try {
                    sleep(15 * 60 * 1000);
                     finishAffinity();
                    System.exit(0);
                } catch (InterruptedException e) {
                    return;
                }
            }
        };
        t.start();
    }
}

现在在您的所有活动类中扩展 BaseActivity ,如下面的示例所示,

public class ClassTest extends BaseActivity {
    .....
    .....
}

答案 1 :(得分:1)

您需要使用ProcessLifecycleOwner检查您的应用程序状态。它支持库版本26 +。

    //Check if app is in background
    ProcessLifecycleOwner.get().getLifecycle().getCurrentState() == 
    Lifecycle.State.CREATED;

    //Check if app is in foreground
    ProcessLifecycleOwner.get().getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED);

这是ProcessLifecycleOwner的依赖。有关更多详细信息,请访问here

dependencies {
    def lifecycle_version = "1.1.1"

    // ViewModel and LiveData
    implementation "android.arch.lifecycle:extensions:$lifecycle_version"
    // alternatively - Lifecycles only (no ViewModel or LiveData).
    //     Support library depends on this lightweight import
    implementation "android.arch.lifecycle:runtime:$lifecycle_version"
    annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" // use kapt for Kotlin
}