葡京娱乐注册SqlDevlepor注册表监听器设置

【声明】 

 

接转载,但请保留文章原来出处→_→ 

1.打开plsqldev。

生命壹号:http://www.cnblogs.com/smyhvae/ 

葡京娱乐注册 1

章来源:http://www.cnblogs.com/smyhvae/p/3960623.html

葡京娱乐注册 2

 

 

【正文】

  1. 键入环境变量

同一、广播的功能和特色

NLS_LANG

  • 广播的生命周期很紧缺,经过调用对象–>实现onReceive–>结束,整个经过尽管截止了。从贯彻的复杂度和代码量来拘禁,广播的是最迷你的Android
    组件,实现多次只待几实践代码。广播对象为组织出后便就实行BroadcastReceiver.onReceive方法,便结束了彼生命周期。所以有时候我们好将她当做函数看也未必不可。
  • 暨颇具组件一样,广播对象为是以动进程的主线程遭遇被组织,所以广播对象的履得是要一并且很快的。也无推荐在内部开子线程,因为频繁线程还免结束,广播对象就是曾实施了被网销毁。如果欲好同样件于耗时的工作
    , 应该经过发送 Intent 给 Service, 由 Service 来形成。
  • 历次广播到来时 , 会重新创设 BroadcastReceiver 对象 , 并且调用
    onReceive() 方法 , 执行完毕以后 , 该对象就受销毁 . 当 onReceive()
    方法在 10 秒内没有实施了, Android 会认为该程序无响应。

SIMPLIFIED CHINESE_CHINA.ZHS16GBK

 

葡京娱乐注册 3

老二、接收系统广播:

 

广播接收器可以擅自地对准好感兴趣的播放进行注册,这样当有对应的播报发出时,广播接收器就能够接收该广播,并于其间处理相应的逻辑。注册广播的点子有少种植,在代码中登记与在清单文件中注册,前者称动态注册,后者叫静态注册。

3.下载sqldevclient。

1、动态注册监听网络生成:

http://pan.baidu.com/s/1o6CDJwY

新建工程文件,首先以MainActivity中定义一个里头类netWorkChangeReceiver,并更写父类的onReceive()方法,这样于网络状态发生变化时,onReceive()方法就是会获得实施,这里运用Toast提示一段子文本信息,代码如下:

解压后找到如下路径,根据实际情况修改

class netWorkChangeReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(context, "network changes", Toast.LENGTH_SHORT).show();
        }        
    }

G:\工具\Oracle\oracleclient\network\admin\tnsnames.ora

继之在onCreate方法中展开动态注册,然后在onDestroy方法吃进行取消注册:

DEMO修改一下HOST
=192.168.184.128改成化HOST =113.108.214.84

 1     private IntentFilter intentFilter;
 2     private netWorkChangeReceiver netWorkChangeReceiver;
 3     
 4     @Override
 5     protected void onCreate(Bundle savedInstanceState) {
 6         super.onCreate(savedInstanceState);
 7         setContentView(R.layout.activity_main);
 8         
 9         //动态注册:创建一个IntentFilter的实例,添加网络变化的广播(功能是对组件进行过滤,只获取需要的消息)
10         intentFilter = new IntentFilter();
11         intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
12         //创建NetWorkChangeReceiver的实例,并调用registerReceiver()方法进行注册
13         netWorkChangeReceiver = new netWorkChangeReceiver();
14         registerReceiver(netWorkChangeReceiver, intentFilter);
15         
16     }
17 
18     //取消注册,一定要记得,不然系统会报错
19     @Override
20     protected void onDestroy() {
21         super.onDestroy();
22         unregisterReceiver(netWorkChangeReceiver);
23     }

 

上代码解释如下:

 

11实践:给意图过滤器intentFilter添加一个值为android.net.conn.CONNECTIVITY_CHANGE的action。因为以网络状态发生变化时,系统就是会生同样漫漫值为android.net.conn.CONNECTIVITY_CHANG的广播。

居功至伟告成!

横流:最后使记,动态注册的广播接收器一定要取消注册才行。

运行程序,就可了。

只是只是提醒网络发生变化还不够人性化,为了能够规范的报用户眼前凡是生网络或者尚未网络,我们还需要针对上述代码进一步优化,修改netWorkChangeReceiver中之代码如下:

 1     class netWorkChangeReceiver extends BroadcastReceiver {
 2         
 3         @Override
 4         public void onReceive(Context context, Intent intent) {
 5             //通过getSystemService()方法得到connectionManager这个系统服务类,专门用于管理网络连接
 6             ConnectivityManager connectionManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
 7             NetworkInfo networkInfo = connectionManager.getActiveNetworkInfo();
 8             if(networkInfo != null && networkInfo.isAvailable()){
 9                 Toast.makeText(context, "network is available",Toast.LENGTH_SHORT).show();
10             }else{
11                 Toast.makeText(context, "network is unavailable",Toast.LENGTH_SHORT).show();
12             }
13                 
14         }
15     }

上边代码解释:

06实施:在onReceive()方法吃,首先通过通过getSystemService()方法获得connectionManager这个系统服务类,专门用于管理网络连接。

07行:然后调用她的getActiveNetworkInfo()方法可赢得NetworkInfo的实例,接着调用NetworkInfo的isAvailable()方法,就得判当前是不是出网络了,最后经Toast提示用户。

此外,查询网的大网状态是用说明权限的,打开清单文件,添加如下权限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

注:访问http://developer.android.com/reference/android/Manifest.permission.html可查Android系统具备的可是声明的权杖。

今运行程序,就可以了。

上面程序完整版本代码如下:

葡京娱乐注册 4葡京娱乐注册 5

 1 package com.example.m05_broadcastreceiver01;
 2 import android.app.Activity;
 3 import android.content.BroadcastReceiver;
 4 import android.content.Context;
 5 import android.content.Intent;
 6 import android.content.IntentFilter;
 7 import android.net.ConnectivityManager;
 8 import android.net.NetworkInfo;
 9 import android.os.Bundle;
10 import android.widget.Toast;
11 public class MainActivity extends Activity {
12     private IntentFilter intentFilter;
13     private netWorkChangeReceiver netWorkChangeReceiver;
14     @Override
15     protected void onCreate(Bundle savedInstanceState) {
16         super.onCreate(savedInstanceState);
17         setContentView(R.layout.activity_main);
18         // 动态注册:创建一个IntentFilter的实例,添加网络变化的广播
19         intentFilter = new IntentFilter();
20         intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
21         // 创建NetWorkChangeReceiver的实例,并调用registerReceiver()方法进行注册
22         netWorkChangeReceiver = new netWorkChangeReceiver();
23         registerReceiver(netWorkChangeReceiver, intentFilter);
24     }
25     // 取消注册,一定要记得,不然系统会报错
26     @Override
27     protected void onDestroy() {
28         super.onDestroy();
29         unregisterReceiver(netWorkChangeReceiver);
30     }
31     class netWorkChangeReceiver extends BroadcastReceiver {
32         @Override
33         public void onReceive(Context context, Intent intent) {
34             //通过getSystemService()方法得到connectionManager这个系统服务类,专门用于管理网络连接
35             ConnectivityManager connectionManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
36             NetworkInfo networkInfo = connectionManager.getActiveNetworkInfo();
37             if(networkInfo != null && networkInfo.isAvailable()){
38                 Toast.makeText(context, "network is available",Toast.LENGTH_SHORT).show();
39             }else{
40                 Toast.makeText(context, "network is unavailable",Toast.LENGTH_SHORT).show();
41             }
42                 
43         }
44     }
45 }

View Code 

 

2、静态注册实现开机启动:

动态注册的章程较灵活,但缺点是:必须于次启动后才能够吸纳及广播,因为注册之逻辑是描写于onCreate()方法被的。为了给程序于非启动之情状下就能够收到广播,这里就得利用及静态注册。

此处我们准备于程序接收一久开机广播,当收到这长达广播时,就好当onReceive()方法被执相应的逻辑,从而实现开机启动之成效。

新建一个接近:BootCompleteReceiver,让他累BroadcastReceiver,在onReceive()方法吃简单地Toast一下,代码如下:

public class BootCompleteReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Boot Complete", Toast.LENGTH_SHORT).show();
    }
}

得看来,这里不再采取中类的不二法门来定义广播接收器,因为稍后咱们要以清单文件AndroidManifest.xml中以这个广播接收器的类名注册上。

接下来修改清单文件AndroidManifest.xml,代码如下:

 1 <uses-sdk
 2         android:minSdkVersion="8"
 3         android:targetSdkVersion="16" />
 4     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
 5     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
 6 
 7     <application
 8         android:allowBackup="true"
 9         android:icon="@drawable/ic_launcher"
10         android:label="@string/app_name"
11         android:theme="@style/AppTheme" >
12         <activity
13             android:name="com.example.m05_broadcastreceiver01.MainActivity"
14             android:label="@string/app_name" >
15             <intent-filter>
16                 <action android:name="android.intent.action.MAIN" />
17 
18                 <category android:name="android.intent.category.LAUNCHER" />
19             </intent-filter>
20         </activity>
21         
22         <receiver android:name=".BootCompleteReceiver">
23             <intent-filter >
24                 <action android:name="android.intent.action.BOOT_COMPLETED"/>
25             </intent-filter>
26         </receiver>
27     </application>

代码解释如下:

终,<application>标签内多了单子标签<receiver>,所有的静态注册之播音接收器都是当此地展开挂号的。

22行:name中吗广播接收器的名

24履行:想使接受的播报。Android系统启动完成后,会发出即长长的叫吧android.intent.action.BOOT_COMPLETED的广播。

05实践:监听系统开机广播需要声明权限。

运作程序后,将手机关机重开,就能接收这长长的广播了。

 

其三、发送自定义广播

1、发送正式广播  

新建工程文件。在作广播之前,我们先行定义一个播接收器来接受这广播才行。因此,新建一个看似:MyBroadcastReceiver,让他累BroadcastReceiver,代码如下:

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "received in MyBroadcastReceiver", Toast.LENGTH_SHORT).show();
    }
}

这里,当MyBroadcastReceiver
收到由定义之播音时,就会执行onReceive()方法吃之逻辑,弹出一个Toast。

继而,要于清单文件AndroidManifest.xml中对这广播接收器进行登记:

 1     <application
 2         android:allowBackup="true"
 3         android:icon="@drawable/ic_launcher"
 4         android:label="@string/app_name"
 5         android:theme="@style/AppTheme" >
 6         <activity
 7             android:name="com.example.m05_broadcastreceiver02.MainActivity"
 8             android:label="@string/app_name" >
 9             <intent-filter>
10                 <action android:name="android.intent.action.MAIN" />
11 
12                 <category android:name="android.intent.category.LAUNCHER" />
13             </intent-filter>
14         </activity>
15         
16         <receiver android:name=".MyBroadcastReceiver">
17             <intent-filter >
18                 <action android:name="com.example.m05_broadcastreceiver02.MY_BROADCAST"/>
19             </intent-filter>
20         </receiver>
21     </application>

代码解释:

18尽:让MyBroadcastReceiver接收一漫漫值吗om.example.m05_broadcastreceiver02.MY_BROADCAST的播放,因此待会儿在发送广播的时节,我们不怕用来这样的同一长长的广播。

接着,修改activity.xml中的代码,添加一个按钮Button。

接下来,修改MainActivity.java中的代码,添加Button的监听事件:点击按钮时,发送广播

 

        Button button1=(Button)findViewById(R.id.button1);
        button1.setOnClickListener(new OnClickListener() {            
            @Override
            public void onClick(View v) {
                Intent intent =new Intent("com.example.m05_broadcastreceiver02.MY_BROADCAST");
                sendBroadcast(intent);
            }
        });

小结:可以见见,点击按钮时,发送com.example.m05_broadcastreceiver02.MY_BROADCAST这漫漫广播,这样,所有能够监听com.example.m05_broadcastreceiver02.MY_BROADCAST这长达广播的播报接收器就还见面同时收到信,此时发出去的即是同样修标准广播,即无序广播。所以接下去就得讲到平稳广播。

 

2、发送有序广播:

广播是平等栽可以超越进程的通信方式,其他应用程序是可收起的。现在我们来发一样漫漫有序广播。

一如既往广播不仅起先后顺序,而且前的播音还好拿后面的播放截断。

每当3.1之代码基础之上,将按钮的监听事件修改如下:

1         Button button1=(Button)findViewById(R.id.button1);
2         button1.setOnClickListener(new OnClickListener() {            
3             @Override
4             public void onClick(View v) {
5                 Intent intent =new Intent("com.example.m05_broadcastreceiver02.MY_BROADCAST");
6                 sendOrderedBroadcast(intent, null);
7             }
8         });

快要06实施代码修改一下,将sendBroadcast()方法改呢sendOrderedBroadcast()方法,sendOrderedBroadcast()方法接收两个参数,第二个参数是一个跟权力相关的字符串,这里传出null即可。

接着,修改清单文件AndroidManifest.xml中对播音接收器的登记,设置优先级:

1         <receiver android:name=".MyBroadcastReceiver">
2             <intent-filter android:priority="100">
3                 <action android:name="com.example.m05_broadcastreceiver02.MY_BROADCAST"/>
4             </intent-filter>
5         </receiver>

就算添加第02行代码。可以看出,通过android:priority属性给广播接收器设置了先期级。这个特性之克以-1000交1000,数值越老,优先级更强。

对接下去,如果想要阻止者广播,防止被后的播放接收器也吸收到了是广播。可以修改MyBroadcastReceiver中的代码:

1 public class MyBroadcastReceiver extends BroadcastReceiver {
2 
3     @Override
4     public void onReceive(Context context, Intent intent) {
5         Toast.makeText(context, "received in MyBroadcastReceiver", Toast.LENGTH_SHORT).show();
6         abortBroadcast();//拦截广播,防止后面的接收到
7     }
8 }

即便添加第06执代码。如果以onReceive()方法中调用了abortBroadcast()方法,就象征是用及时漫长广播拦截,后面的播报接收器将无法再次接到到。

特意关心:

  • 广播接收器的生命周期:关键在于BroadcastReceiver中之onReceive()方法,从onReceive()里的率先履代码开始,onReceive()里之最终一行代码结束。
  • 一个播到来之时节,用啊办法提醒用户是不过友好的啊?第一栽方式是吐司,第二种植方法是通。注:不要动对话框,以免中断了用户正在进展的操作。

 

季、使用当地广播:

之前我们发送和收取的广播全部都是属于全局广播,即发出去的播音可以被另外任何应用程序接收至,并且我们呢可接纳来自于其他任何应用程序的广播。这样一来,必然会招安全题材。于是就发出了地方广播:即只能以按应用程序中发送和收播放。这将用及了LocalBroadcastManager这个类似来针对广播进行管制。

咱俩修改2.1受动态注册广播接收器的代码,即改MainActivity.java中的代码如下:

package com.example.broadcasttest;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v4.content.LocalBroadcastManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
    private IntentFilter intentFilter;

    private LocalReceiver localReceiver;

    private LocalBroadcastManager localBroadcastManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //通过LocalBroadcastManager的getInstance()方法得到它的一个实例
        localBroadcastManager = LocalBroadcastManager.getInstance(this);
        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(
                        "com.example.broadcasttest.LOCAL_BROADCAST");
                localBroadcastManager.sendBroadcast(intent);//调用sendBroadcast()方法发送广播
            }
        });
        //动态注册本地的广播接收器
        intentFilter = new IntentFilter();
        intentFilter.addAction("com.example.broadcasttest.LOCAL_BROADCAST");
        localReceiver = new LocalReceiver();
        localBroadcastManager.registerReceiver(localReceiver, intentFilter);
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        localBroadcastManager.unregisterReceiver(localReceiver);
    }

    class LocalReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(context, "received local broadcast",
                    Toast.LENGTH_SHORT).show();
        }
    }
}

流淌:本地广播是无法通过静态注册的法门来接过的。其实呢全然好了解,因为静态注册主要就是是为着为程序于无启动的情景下也会收广播。而发送本地广播时,我们的次第一定是早已启动了,没有必要采取到静态注册之机能。

 

五、各种各样的广播: 

当android中出多体系自带的intent.action,通过监听这些事件我们可就很多力量。

  1. 开机:
    String BOOT_COMPLETED_ACTION
    广播:在系统启动后。这个动作被广播一糟糕(只来同一蹩脚)。监听:
    “android.intent.action.BOOT_COMPLETED”
  2. 对讲机拨入:
    String ANSWER_ACTION 动作:处理拨入的电话。监听:
    “android.intent.action.ANSWER”
  3. 电量变化:
    String BATTERY_CHANGED_ACTION
    广播:充电状态,或者电池的电量发生变化。监听:
    “android.intent.action.BATTERY_CHANGED”
  4. 日期变更:
    String DATE_CHANGED_ACTION 广播:日期为改。
    监听:“android.intent.action.DATE_CHANGED”
  5. 撤销更新下载:
    String FOTA_CANCEL_ACTION 广播:取消所有给高悬于的 (pending)
    更新下载。 监听:“android.server.checkin.FOTA_CANCEL”
  6. 履新开始安装:
    String FOTA_READY_ACTION 广播:更新都于下载 可以起安装。监听
    “android.server.checkin.FOTA_READY”
  7. 主屏幕:
    String HOME_CATEGORY 类别:主屏幕
    (activity)。设备启动后显得的率先只 activity。
    监听:”android.intent.category.HOME”
  8. 新应用:
    String PACKAGE_ADDED_ACTION
    广播:设备及新装置了一个应用程序包。监听:
    “android.intent.action.PACKAGE_ADDED”
  9. 删去应用:
    String PACKAGE_REMOVED_ACTION
    广播:设备上抹了一个应用程序包。监听:
    “android.intent.action.PACKAGE_REMOVED”
  10. 屏幕关闭:
    String SCREEN_OFF_ACTION 广播:屏幕被关门。监听:
    “android.intent.action.SCREEN_OFF”
  11. 屏幕被:
    String SCREEN_ON_ACTION 广播:屏幕就让打开。
    监听:“android.intent.action.SCREEN_ON”
  12. 时区改变:
    String TIMEZONE_CHANGED_ACTION 广播:时区已经改变。监听:
    “android.intent.action.TIMEZONE_CHANGED”
  13. 时刻改:
    String TIME_CHANGED_ACTION 广播:时间曾转(重新设置)。
    “android.intent.action.TIME_SET”
  14. 时光流逝:
    String TIME_TICK_ACTION 广播:当前时光已转(正常的时刻流逝)。
    “android.intent.action.TIME_TICK”
  15. 上大容量存储模式:
    String UMS_CONNECTED_ACTION 广播:设备进入 USB 大容量存储模式。
    “android.intent.action.UMS_CONNECTED”
  16. 退大容量存储模式:
    String UMS_DISCONNECTED_ACTION 广播:设备由 USB
    大容量存储模式剥离。 “android.intent.action.UMS_DISCONNECTED”
  17. 壁纸改变:
    String WALLPAPER_CHANGED_ACTION 广播:系统的墙纸已经变更。
    “android.intent.action.WALLPAPER_CHANGED”
  18. web搜索:
    String WEB_SEARCH_ACTION 动作:执行 web 搜索。
    “android.intent.action.WEB_SEARCH”
  19. 网生成:
    String CONNECTIVITY_CHANGE_ACTION
    动作:网络转移。“android.intent.action.CONNECTIVITY_CHANGE_ACTION”

 

六、实例:应用动态注册,监听手机的电量变化。

圆版本代码如下:

(1)activity_main.xml代码如下:

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:paddingBottom="@dimen/activity_vertical_margin"
 6     android:paddingLeft="@dimen/activity_horizontal_margin"
 7     android:paddingRight="@dimen/activity_horizontal_margin"
 8     android:paddingTop="@dimen/activity_vertical_margin"
 9     tools:context=".MainActivity" >
10 
11     <TextView
12         android:id="@+id/textView1"
13         android:layout_width="match_parent"
14         android:layout_height="wrap_content"
15         android:textSize="30dp"
16         android:gravity="center"/>
17 
18 </LinearLayout> 

(2)MainActivity.java的代码如下:

 1 package com.example.m05_broadcastreceiver02;
 2 
 3 import android.app.Activity;
 4 import android.content.BroadcastReceiver;
 5 import android.content.Context;
 6 import android.content.Intent;
 7 import android.content.IntentFilter;
 8 import android.os.Bundle;
 9 import android.widget.TextView;
10 
11 public class MainActivity extends Activity {
12 
13     
14     private BatteryBroadcastReceiver batteryBroadcastReceiver;
15     private TextView textView;
16     @Override
17     protected void onCreate(Bundle savedInstanceState) {
18         super.onCreate(savedInstanceState);
19         setContentView(R.layout.activity_main);
20         textView=(TextView)findViewById(R.id.textView1);
21         
22         //动态注册监听电量的广播接收器
23         IntentFilter intentFilter = new IntentFilter();
24         intentFilter.addAction("android.intent.action.BATTERY_CHANGED");
25         batteryBroadcastReceiver = new BatteryBroadcastReceiver();
26         registerReceiver(batteryBroadcastReceiver, intentFilter);       
27     }
28     
29     //取消注册监听电量的广播接收器
30     @Override
31     protected void onDestroy() {
32         super.onDestroy();
33         unregisterReceiver(batteryBroadcastReceiver);
34     }
35 
36     //新建一个广播接收器,监听电量的变化
37     public class BatteryBroadcastReceiver extends BroadcastReceiver {
38         @Override
39         public void onReceive(Context context, Intent intent) {
40             if(intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)) {
41                 //获取当前电量
42                 int level = intent.getIntExtra("level", 0);
43                 //电量的总刻度
44                 int scale = intent.getIntExtra("scale", 100);
45                 textView.setText("电池电量为"+((level*100) / scale)+"%");
46                 
47                 //当电量低时,可以进行一些操作,例如弹出通知等
48 /*                if(level<15){
49                     do something
50                 }*/
51             }
52         }
53         
54     }
55     
56 }

继而,在清单文件中展开权力声明:

<uses-permission android:name="android.permission.BATTERY_STATS"/>

MainActivity.java的代码解释如下:

40及45执:固定代码,用于获取当前电量

48顶50实行:当电量低时,可以拓展一些操作,例如弹出通知等

运转后,界面如下:

葡京娱乐注册 6