boolean android.app.Activity.isFinishing()函数使用

标签: actionstring
2011-11-29 10:43 11487人阅读 评论(0) 收藏 举报
 分类:
++(34) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

这个函数注释:

Check to see whether this activity is in the process of finishing, either because you called finish on it or someone else has requested that it finished. This is often used in onPause to determine whether the activity is simply pausing or completely finishing.

Returns:
If the activity is finishing, returns true; else returns false.
See Also:
finish

判断this Activity是否finish,自己调用或者某种因素请求finish,经常用在onPause函数里面

这次项目中,遇到这个问题,一个activity在finish时候,还有收到广播,结果导致bug

在广播接收器中先判断一下比较保险。或者在onDestroy里面注销广播

private BroadcastReceiver mIntentReceiver = new BroadcastReceiver()
    {
        @Override
        public void onReceive(Context context, Intent intent)
        {
            Log.d(TAG, intent.toString());    
            final String action = intent.getAction();
            
            if(isFinishing())
            {

。。。。。。。

return;

}

}

还有遇到一个问题,在activity  finish时候,这时候handler.sendMessage,这时候也会导致bug

这时候最好在finish函数里面removeAllCallbackAndMessage(this)

package com.netease.mobimail.activity;import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Display;
import android.view.WindowManager;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.GoogleApiClient.Builder;
import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
import com.google.android.gms.common.api.PendingResult;
import com.google.android.gms.common.api.ResultCallback;
import com.google.android.gms.wearable.Node;
import com.google.android.gms.wearable.NodeApi;
import com.google.android.gms.wearable.NodeApi.GetConnectedNodesResult;
import com.google.android.gms.wearable.NodeApi.NodeListener;
import com.google.android.gms.wearable.Wearable;
import com.netease.mobimail.WearMailApplication;
import com.netease.mobimail.command.BaseCommand;
import com.netease.mobimail.storage.ConfigSharedManager;
import java.util.Iterator;
import java.util.List;
import ows.phoneAndWear.storage.entity.DuwearMail;public abstract class BaseActivityextends Activityimplements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener
{public String TAG = "";public int mHeight;NodeApi.NodeListener mNodeListener = new NodeApi.NodeListener(){public void onPeerConnected(Node paramAnonymousNode){ConfigSharedManager.getConfigSharedManager(BaseActivity.this).upDatePhoneConnectState(true);BaseActivity.this.onPeerConnectSuccess();}public void onPeerDisconnected(Node paramAnonymousNode){if (BaseActivity.this.getTaskId() == -1) {return;}ConfigSharedManager.getConfigSharedManager(BaseActivity.this).upDatePhoneConnectState(false);BaseActivity.this.onPeerDisconnectFail();}};private GoogleApiClient mOwsApiClient;public int mWitdh;private void initOwsApiClient(){this.mOwsApiClient = new GoogleApiClient.Builder(this).addApi(Wearable.API).addConnectionCallbacks(this).addOnConnectionFailedListener(this).build();}protected void detectPeerNode(){Log.i(this.TAG, "start detect peer phone");Wearable.NodeApi.getConnectedNodes(this.mOwsApiClient).setResultCallback(new ResultCallback(){public void onResult(NodeApi.GetConnectedNodesResult paramAnonymousGetConnectedNodesResult){if (paramAnonymousGetConnectedNodesResult.getNodes().size() == 0){Log.i(BaseActivity.this.TAG, "no peer phone");BaseActivity.this.onNoPeerConnect();ConfigSharedManager.getConfigSharedManager(BaseActivity.this).upDatePhoneConnectState(false);}for (;;){return;Iterator localIterator = paramAnonymousGetConnectedNodesResult.getNodes().iterator();while (localIterator.hasNext()){Node localNode = (Node)localIterator.next();BaseActivity.this.printNodeInfo(localNode);ConfigSharedManager.getConfigSharedManager(BaseActivity.this).upDatePhoneConnectState(true);}}}});}protected abstract void doAfterClientConnectFail();protected abstract void doAfterClientConnectSuccess();public GoogleApiClient getAvailableOwsApiClient(){if ((this.mOwsApiClient == null) || (!this.mOwsApiClient.isConnected())) {return null;}return this.mOwsApiClient;}public boolean isNeedConnectCallback(){return (WearMailApplication.getCurrentActivity() != null) && (WearMailApplication.getCurrentActivity() == this);}public void onConnected(Bundle paramBundle){ConfigSharedManager.getConfigSharedManager(this).updateApiClientAvailable(true);Wearable.NodeApi.addListener(this.mOwsApiClient, this.mNodeListener);detectPeerNode();BaseCommand.reStartAllRequest();doAfterClientConnectSuccess();}public void onConnectionFailed(ConnectionResult paramConnectionResult){Log.i(this.TAG, "onConnectionFailed");ConfigSharedManager.getConfigSharedManager(this).updateApiClientAvailable(false);doAfterClientConnectFail();BaseCommand.cancalAllCommands();}public void onConnectionSuspended(int paramInt){Log.i(this.TAG, "onConnectionSuspended");}protected void onCreate(Bundle paramBundle){super.onCreate(paramBundle);this.TAG = getClass().getSimpleName();WearMailApplication.addActivity(this);WearMailApplication.setCurrentActivity(this);initOwsApiClient();if (!isFinishing()){this.mHeight = getWindowManager().getDefaultDisplay().getHeight();this.mWitdh = getWindowManager().getDefaultDisplay().getWidth();}}public abstract void onGetMessage(int paramInt, DuwearMail paramDuwearMail);protected abstract void onNoPeerConnect();protected abstract void onPeerConnectSuccess();protected abstract void onPeerDisconnectFail();public void onStart(){super.onStart();this.mOwsApiClient.connect();}public void onStop(){super.onStop();BaseCommand.pauseAllRequest();if ((this.mOwsApiClient != null) && (this.mOwsApiClient.isConnected())){Wearable.NodeApi.removeListener(this.mOwsApiClient, this.mNodeListener);this.mOwsApiClient.disconnect();}}public void printNodeInfo(Node paramNode) {}public GoogleApiClient requestOwsApiClient(){if (this.mOwsApiClient == null) {this.mOwsApiClient = new GoogleApiClient.Builder(WearMailApplication.getCurrentActivity()).addApi(Wearable.API).addConnectionCallbacks(WearMailApplication.getCurrentActivity()).addOnConnectionFailedListener(WearMailApplication.getCurrentActivity()).build();}this.mOwsApiClient.blockingConnect();if (!this.mOwsApiClient.isConnected()) {return null;}return this.mOwsApiClient;}
}

手表开发的isFinishing相关推荐

  1. 苹果android wear教程,Android Wear/Apple Watch/WatchKit智能手表开发入门教程

    Android Wear/DuWear/TicWear/TOS/YunOS For Wear Apple Watch/Watch OS/WatchKit 智能手表开发者服务平台OpenWatch SD ...

  2. 华为手表开发:WATCH 3 Pro(17)传感器订阅指南针

    华为手表开发:WATCH 3 Pro(17)传感器订阅指南针 初 环境与设备 指南针传感器介绍与说明 鸿蒙开发 文件夹: 文件 新增展示的文本标记 index.hml index.css index. ...

  3. 华为手表开发:WATCH 3 Pro(15)传感器订阅加速度计

    华为手表开发:WATCH 3 Pro(15)传感器订阅加速度计 初 环境与设备 加速度传感器介绍与说明 鸿蒙开发 文件夹: 文件 重点 新增展示的文本标记 index.hml index.css in ...

  4. 华为手表开发:WATCH 3 Pro(8)获取位置服务

    华为手表开发:WATCH 3 Pro(8)获取位置服务 初 环境与设备 文件夹: 文件 新增第二页面 geolocation.hml geolocation.js 修改首页 -> 新建按钮 &q ...

  5. java系统智能手表_java_智能手表开发API接口,随着移动技术的发展,许多传 - phpStudy...

    智能手表开发API接口 随着移动技术的发展,许多传统的电子产品也开始增加移动方面的功能,比如过去只能用来看时间的手表,现今也可以通过智能手机或家庭网络与互联网相连,显示来电信息.邮件.照片.新闻.天气 ...

  6. 华为手表开发:WATCH 3 Pro(3)创建项目以及运行完整流程

    华为手表开发:WATCH 3 Pro(3)创建项目以及运行完整流程 初 环境与设备 创建项目 创建项目入口 配置项目 运行项目 报错 需要在 Appgallery Connect , 创建项目,然后在 ...

  7. 疯壳-MTK智能电话手表开发软件下载

    1_MTK智能穿戴(电话手表)开发教程_代码下载流程.pdf官网地址:https://www.fengke.club/GeekMart/views/mall/goodsDetails.html?pro ...

  8. 华为HarmonyOS鸿蒙智能手表开发和设计需要知道的

    华为HarmonyOS智能手表分为两类:(1)智能穿戴(2)轻量级智能穿戴 智能穿戴产品目前只有:HUAWEI WATCH 3. 其他都是轻量级智能穿戴,如HUAWEI WATCH GT 2 Pro, ...

  9. 华为手表开发:GT3(1)配置调试设备

    华为手表开发:GT3(1)配置调试设备 初 环境与设备 获取手表UUID 登录 AppGallery Connect 点击用户与访问 初 希望能写一些简单的教程和案例分享给需要的人 鸿蒙可穿戴开发 欢 ...

  10. 疯壳-MTK智能电话手表开发串码下载

    手表必须是在关机的状态下才能下载串码. 所需软件: SN_Writer_Tool_exe_v1.1632.00文件夹下的SN Writer.exe. 所需硬件: USB数据线,儿童手表. 下载流程: ...

最新文章

  1. C 语言编程 — Makefile
  2. vb.net怎么调用fastreport报表_零编码制作报表可能吗?
  3. python学习:time、unixtime、string的转换
  4. Windows7配置GPU和Theano编程环境
  5. vue项目封装axios
  6. asp.net matlab,ASP.NET与MATLAB混合编译以及数据传递【更新中】
  7. centos 启动一个redis_基于prometheus+grafana体系监控redis缓存服务
  8. selenium firefox驱动_Python3+selenium配置常见报错解决方案
  9. 第 6-1 课:Spring 核心 + 面试题
  10. android service 访问数据库,XE5 ANDROID通过webservice访问操作MSSQL数据库
  11. [转载] json.dumps()和json.dump()的用法和区别
  12. H5的sessionStorage 和 localStorage
  13. 随机计数器java_Java高效计数器
  14. devexpress ajax demo,DevExpress Demo示例展示:多功能站点插件 附在线演示
  15. C#—— 身份证验证方法
  16. Apache日志格式与配置
  17. 《游牧者的抉择》读书笔记
  18. Mac下无法拷贝文件到移动硬盘
  19. GDC演讲翻译——看门狗2的载具同步
  20. 攻城狮还是产品运营?

热门文章

  1. win11彻底卸载微软bing输入法,包括删除输入法状态栏图标
  2. Cloudera Manager 安装
  3. 如何将win7电脑变身WIFI热点,让手机、笔记本共享上网?
  4. Linux学习之计划任务(at、batch、crontab)篇
  5. 中国关系型社会的环境如何生存发展------总结程序员如何做人做事
  6. 网页中自动连续播放音乐文件的实现
  7. Windows Hook案例分析与技术探索
  8. HLS directive
  9. IAR设置flash偏移地址问题icf文件
  10. webim--web端即时通讯的实现