【问题标题】:Determine if app has been closed without using OnStop()确定应用程序是否已在不使用 OnStop() 的情况下关闭
【发布时间】:2015-07-24 05:14:22
【问题描述】:

我想做的是在用户退出我的应用程序时向我的后端服务器发送一个注销请求(可以在任何活动期间发生,有很多)。

似乎我不能使用OnStop(),因为我有一个画廊选择器和相机意图,当它们启动时,OnPauseOnStop 被调用。我需要一种方法来明确知道该应用已关闭。

我已经阅读了有关使用 Service/BroadcastReceiver 甚至 LocalBroadcastManager 的信息,或者可能将请求绑定到单击主页按钮的时间。

我无法检查应用程序是否已发送到后台,因为这对于相机/图库 Intent 启动以及正在发送到后台的应用程序都是如此。我也试过检查正在启动的活动的包名,但这可能在其他设备上是可变的(例如,画廊可能有不同的包名)。

非常感谢任何建议/指导。

编辑:我发现实际上没有办法拦截按下主页按钮。仍在寻找解决方案!

【问题讨论】:

  • OnStop() 或 OnDestroy() ?.这种情况何时发生,从最近的应用程序中删除?
  • @sunilsunny 我不能使用OnDestroy(),因为它不能保证被调用,并且OnStop可以在多种情况下被调用。是的,用户可能会从最近的应用程序中删除该应用程序。
  • @RuchirBaronia 不!
  • @LKB 那你做了什么?抱歉,最后一条评论中的大写锁定

标签: android android-activity broadcastreceiver localbroadcastmanager


【解决方案1】:

我遇到了类似的问题,我使用服务来解决我的问题。这就是我所做的

在主要活动中

 ServiceConnection mConnection = new ServiceConnection() {
 public void onServiceConnected(ComponentName className,
                                       IBinder binder) {
            ((KillingNotificationBar.KillBinder) binder).service.startService(new Intent(
                    Main.this, KillingNotificationBar.class));
        }

        public void onServiceDisconnected(ComponentName className) {
        }

    };
 bindService(new Intent(Main.this,
                    KillingNotificationBar.class), mConnection,
            Context.BIND_AUTO_CREATE);

KillingNotificationBar 类

public class KillingNotificationBar extends Service {
private final IBinder mBinder = new KillBinder(this);
public class KillBinder extends Binder {
    public final Service service;
    public KillBinder(Service service) {
        this.service = service;
    }
}
@Override
public IBinder onBind(Intent intent) {
    return mBinder;
}

@Override
public void onCreate() {
    you will know if the activity is destroyed
}
}

将此添加到您的清单中

 <service android:name=".services.KillingNotificationBar"/>

注意 执行需要 1-5 秒。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 2014-07-30
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    相关资源
    最近更新 更多