GVKun编程网logo

Android 判断程序在手机中是否是活动状态或者正在运行状态(android判断app是否运行)

10

关于Android判断程序在手机中是否是活动状态或者正在运行状态和android判断app是否运行的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于AndroidActivity活动状态及生

关于Android 判断程序在手机中是否是活动状态或者正在运行状态android判断app是否运行的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Android Activity活动状态及生存周期、android – 如何从父活动中调用正在运行的子活动的方法?、android – 如何检查移动数据是否实际处于活动状态或wifi是否实际连接到任何热点?、android – 应用程序未安装在手机中等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

Android 判断程序在手机中是否是活动状态或者正在运行状态(android判断app是否运行)

Android 判断程序在手机中是否是活动状态或者正在运行状态(android判断app是否运行)

下面是小编 jb51.cc 通过网络收集整理的代码片段。

小编小编现在分享给大家,也给大家做个参考。

项目需求上碰到个这样的问题,在Service中需要判断当前的程序是否是活动状态,换句话说也就是说后台跑的服务中有业务需求检测当前程序是否是该服务的程序 这样好让点击推送通知时跳转到不同的页面进行不同的操作。下面就粘贴出我封装了一下的方法和大家共享。
    /** 
         *  
         *  @Description    : 这个包名的程序是否在运行 
         *  @Method_Name    : isRunningApp 
         *  @param context 上下文 
         *  @param packageName 判断程序的包名 
         *  @return 必须加载的权限 
         *      <uses-permission android:name="android.permission.GET_TASKS" />  
         *  @return         : boolean 
         *  @Creation Date  : 2014-10-31 下午1:14:15  
         *  @version        : v1.00 
         *  @Author         : JiaBin 
          
         *  @Update Date    :  
         *  @Update Author  : JiaBin 
         */  
        public static boolean isRunningApp(Context context,String packageName) {  
            boolean isAppRunning = false;  
            ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);  
            List<RunningTaskInfo> list = am.getRunningTasks(100);  
            for (RunningTaskInfo info : list) {  
                if (info.topActivity.getPackageName().equals(packageName) && info.baseActivity.getPackageName().equals(packageName)) {  
                    isAppRunning = true;  
                    // find it,break  
                    break;  
                }  
            }  
            return isAppRunning;  
        }  

首先需要注意的是要想进行判断,必须加入注释中的那个权限,不然程序会抛异常的。大体的思路是这样的,获得Activity的管理器,并且通过管理器获得 当前正在运行的100个程序,然后去循环这个结果集,获取在迭代过程中每个程序的基础页面的包名和栈式最顶层的包名,用该包名和我们需要判断传入的包名参 数进行比对,如果找到了就认为该程序正在运行,如果没找到就证明该程序没在运行。

以上是小编(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给程序员好友。

Android Activity活动状态及生存周期

Android Activity活动状态及生存周期

1、活动状态

每个活动在其生命周期中最多可能会有4中状态。

(1)运行状态

当一个活动位于返回栈的栈顶时,此时活动就处于运行状态。系统不会回收处于运行状态的活动。

(2)暂停状态

当一个活动不再处于栈顶位置,但仍然可见时,这个活动就进入了暂停状态。因为并不是每个活动都会占满整个屏幕的,比如对话框形式的活动只会占用屏幕中间的部分区域。处于暂停状态的活动仍然是完全存活着的,系统一般不会回收这种活动,只有在内存极低的情况下,系统才会主动考虑回收这种活动。

(3)停止状态

当一个活动不再处于栈顶位置,并且完全不可见的时候,就进入了停止状态。系统仍然会为这种活动保存相应的状态和成员变量,但是这并不是完全可靠的,当其他地方需要内存时,处于停止状态的活动有可能会被系统回收。

(4)销毁状态

当一个活动从返回栈中移除后就变成了销毁状态。系统就会回收这种状态的活动,从而保证内存充足。

 

2、活动的生存周期

Activity 类中定义了7个回调方法,覆盖了活动生命周期的每一个环节。

onCreate();

这个方法在活动第一次被创建的时候调用,在此方法中完成活动的初始化操作,比如加载布局、绑定事件等。

onStart();

这个方法在活动由不可见变为可见的时候调用。

onResume();

这个方法在活动准备好和用户进行交互的时候调用。此时的活动一定位于返回栈的栈顶,并且处于运行状态。

onPause();

这个方法在系统准备去启动或者恢复另一个活动的时候调用。我们通常会在这个方法中将一些消耗 CPU 的资源释放掉,以及保存一些关键数据,但这个方法的执行速度一定要快,不然会影响到新的栈顶活动的使用。

onStop();

这个方法在活动完全不可见的时候调用。它和 onPause() 方法的主要区别:如果启动的新活动是一个对话框式的活动,那么 onPause() 方法会得到执行,而 onStop() 方法并不会执行。

onDestroy();

这个方法在活动被销毁之前调用,之后活动的状态将变为销毁状态。

onRestart();

这个方法在活动由停止状态变为运行状态之前调用,也就是活动被重新启动了。

 

以上 7 个方法中除了 onRestart() 方法,其他都是两两相对的,从而又可以将活动分为 3 中生存周期。

完整生存期

活动在 onCreate() 方法和 onDestroy() 方法之间所经历的,就是完整生存期。一般情况下,一个活动会在 onCreate() 方法中完成各种初始化操作,而在 onDestroy() 方法中完成释放内存的操作。

可见生存期

活动在 onStart() 方法和 onStop() 方法之间所经历的,就是可见生存期。在可见生存期内,活动对于用户总是可见的,即便有可能无法和用户进行交互。我们可以通过这两个方法,合理的管理那些对用户可见的资源。比如在 onStart() 方法中对资源进行加载,在 onStop() 方法中对资源进行释放,从而保证处于停止状态的活动不会占用过多内存。

前台生存期

活动在 onResume() 方法和 onPause() 方法之间所经历的就是前台生存期。在前台生存期内,活动总是处于运行状态,此时的活动是可以和用户进行交互的,平时看到和接触最多的就是前台生存期下的活动。

 

android – 如何从父活动中调用正在运行的子活动的方法?

android – 如何从父活动中调用正在运行的子活动的方法?

我正在开发一个 Android应用程序,它有3个选项卡,在MainActivity.java中创建.每个标签都有自己的活动.在那些活动中,我有一个名为“Refresh()”的方法来更新该选项卡中的列表视图.
当用户点击按钮时,调用方法“refreshTab(View v)”.

// Tab refreshen
public void refreshTab (View v) {
    Activity MyActivity = this.getCurrentActivity();        
    MyActivity.Refresh();       
}

这是抛出“方法刷新()未定义类型活动.但是,”MyActivity“填充了选项卡活动.
我该如何让这个工作?

解决方法

您需要将活动强制转换为您的活动类型.现在您正在尝试调用Android类活动,该活动没有“刷新”功能.

android – 如何检查移动数据是否实际处于活动状态或wifi是否实际连接到任何热点?

android – 如何检查移动数据是否实际处于活动状态或wifi是否实际连接到任何热点?

我正在尝试检查是否存在互联网连接或设备是否实际连接到wifi.

注意:我不是想看看是否有互联网连接或只是连接了wifi.我想检查设备是否实际接收和发送数据包.

此代码段实际上会检查是否存在移动数据连接,或者是否启用了wifi但是没有说明连接是否已实际建立.

public boolean isNetworkConnected(Context context) {
        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo ni = cm.getActiveNetworkInfo();            
        if (ni == null) {
            // There are no active networks.
            Toast.makeText(context, "No Network", Toast.LENGTH_LONG).show();
            return false;
        } else
            return true;

要么

    boolean isConnected = ni != null && ni.isConnectedOrConnecting();

    if(isConnected){

        return true;

    }
    else{
        Toast.makeText(context, "No Network", Toast.LENGTH_LONG).show();
        return false;
    }
}

要么

public boolean haveNetworkConnection(Context context) {
        boolean haveConnectedWifi = false;
        boolean haveConnectedMobile = false;

        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo[] netInfo = cm.getAllNetworkInfo();
        for (NetworkInfo ni : netInfo) {
            if (ni.getTypeName().equalsIgnoreCase("WIFI"))
                if (ni.isConnected())
                    haveConnectedWifi = true;
            if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
                if (ni.isConnected())
                    haveConnectedMobile = true;
        }
        return haveConnectedWifi || haveConnectedMobile;
    }

以上所有代码片段仅检查是否启用了wifi或数据.它不显示连接是否已建立.如果启用了wifi或数据,它将始终返回true.

同样,我的目标是检查是否检查连接是否已建立.

任何帮助都会非常有用..提前谢谢..

android – 应用程序未安装在手机中

android – 应用程序未安装在手机中

我在模拟器中运行应用程序它成功运行,应用程序的图标显示在模拟器菜单中但是当我尝试从模拟器菜单再次运行该应用程序时,它不能允许我从那里运行并显示Toast“应用程序未安装在手机中“.

在图像中,红色圆形是我的应用程序图标.

解决方法

如果您在 AndroidManifest.xml中声明了两次MainActivity,则会发生这种情况,

首先作为一个发射者

<activity android:name=".MyActivity" android:label="@string/app_name">  
    <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

然后只是声明:

<activity android:name=".MyActivity" />

所以检查一下并删除第二个额外声明.

今天关于Android 判断程序在手机中是否是活动状态或者正在运行状态android判断app是否运行的讲解已经结束,谢谢您的阅读,如果想了解更多关于Android Activity活动状态及生存周期、android – 如何从父活动中调用正在运行的子活动的方法?、android – 如何检查移动数据是否实际处于活动状态或wifi是否实际连接到任何热点?、android – 应用程序未安装在手机中的相关知识,请在本站搜索。

本文标签: