当前位置: 首页 > news >正文

站长工具怎么关闭一份完整app运营推广方案

站长工具怎么关闭,一份完整app运营推广方案,个人网站空间大小,河南做网站推广Android中的广播机制 Android提供了一套完整的API#xff0c;允许应用程序自由地发送和接受广播。 发送广播的方法借助于Intent#xff0c;接受广播的方法需要广播接收器#xff08;BroadcastsReceiver#xff09;。 Android中的广播主要分为两种类型#xff0c;标准广播和…Android中的广播机制 Android提供了一套完整的API允许应用程序自由地发送和接受广播。 发送广播的方法借助于Intent接受广播的方法需要广播接收器BroadcastsReceiver。 Android中的广播主要分为两种类型标准广播和有序广播。   标准广播Normal broadcasts是一种完全异步执行的广播在广播发出之后所有的广播接收器几乎都会在 同一时刻接受到这条广播消息。 有序广播Ordered broadcasts是一种同步执行的广播在广播发出之后同一时刻只会有一个广播接收器能够收到这条广播的消息 当这个广播接收器中的逻辑执行完毕后广播才会继续传递。这样前面的广播接收器就可以截断正在传递的广播   广播接收器可以自由地对自己感兴趣的广播进行注册这样当有相应的广播发出时广播接收器就能够收到该广播 并在内部处理相应的逻辑。 注册广播的方式一般有两种在代码中注册也称为动态注册和在AndroidManifest.xml中注册也称为静态注册。   广播接收器的创建新建一个类让其继承自BroadcastsReceiver并重写父类的onReceive()方法。 这样当有广播到来时onReceive()方法就会执行具体的逻辑就可以在这个方法中处理。   下面通过动态注册的方法编写一个能够监听网络变化的程序。新建一个BroadcastTest项目 然后修改MainActivity中的代码如下所示 1 public class MainActivity extends AppCompatActivity {2 3 private IntentFilter intentFilter;4 5 private NetworkChangeReceiver networkChangeReceiver;6 7 Override8 protected void onCreate(Bundle savedInstanceState) {9 super.onCreate(savedInstanceState); 10 setContentView(R.layout.activity_main); 11 //创建一个IntentFilter的实例 12 intentFilter new IntentFilter(); 13 //广播接收器想要监听什么广播就在这里添加相应的action 14 intentFilter.addAction(android.net.conn.CONNECTIVITY_CHANGE); 15 //创建一个NetworkChangeReceiver的实例 16 networkChangeReceiver new NetworkChangeReceiver(); 17 //调用registerReceiver()方法进行注册将NetworkChangeReceiver的实例和IntentFilter的实例都传递进去 18 registerReceiver(networkChangeReceiver,intentFilter); 19 20 } 21 22 Override 23 public boolean onCreateOptionsMenu(Menu menu) { 24 // Inflate the menu; this adds items to the action bar if it is present. 25 getMenuInflater().inflate(R.menu.menu_main, menu); 26 return true; 27 } 28 29 Override 30 public boolean onOptionsItemSelected(MenuItem item) { 31 // Handle action bar item clicks here. The action bar will 32 // automatically handle clicks on the Home/Up button, so long 33 // as you specify a parent activity in AndroidManifest.xml. 34 int id item.getItemId(); 35 36 //noinspection SimplifiableIfStatement 37 if (id R.id.action_settings) { 38 return true; 39 } 40 41 return super.onOptionsItemSelected(item); 42 } 43 44 Override 45 protected void onDestroy() { 46 super.onDestroy(); 47 //动态注册的广播接收器一定要取消注册 48 unregisterReceiver(networkChangeReceiver); 49 } 50 51 //定义一个内部类 52 class NetworkChangeReceiver extends BroadcastReceiver { 53 Override 54 public void onReceive(Context context, Intent intent) { 55 //通过getSystemService()方法得到ConnectivityManager的实例这是一个系统服务类 56 // 专门用于管理网络连接的 57 ConnectivityManager connectivityManager 58 (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 59 //调用ConnectivityManager的getActiveNetworkInfo()方法可以得到NetworkInfo的实例 60 NetworkInfo networkInfo connectivityManager.getActiveNetworkInfo(); 61 //调用NetworkInfo的isAvailable()方法就可以判断当前是否有网络了 62 if (networkInfo ! null networkInfo.isAvailable()) { 63 Toast.makeText(context,network is available,Toast.LENGTH_SHORT).show(); 64 }else { 65 Toast.makeText(context,network is unavailable,Toast.LENGTH_SHORT).show(); 66 } 67 68 } 69 } 70 } 上面的代码中可以看到在MainActivity中定义了一个内部类NetworkChangeReceiver这个类是继承自BroadcastsReceiver的 并重写了onReceive()方法。这样每当系统的网络状态发生变化时onReceive()中的方法就会执行。   在onReceive()方法中首先通过getSystemService()方法得到ConnectivityManager的实例这时一个系统服务类专门用于   管理网络的。   然后调用ConnectivityManager的getActiveNetworkInfo()方法得到NetworkInfo的实例接着调用NetworkInfo的isAvailable()方法   就可以判断是否有网络了。 onCreate()方法中首先创建了一个IntentFilter的实例给它添加一个值为android.net.conn.CONNECTIVITY_CHANGE的action。网络 发生变化时系统发出的正是一条值为android.net.conn.CONNECTIVITY_CHANGE的广播。 接下来创建一个NetworkChangeReceiver的实例然后调用registerReceiver()方法进行注册将NetworkChangeReceiver的实例和 IntentFilter的实例都传递进去这样NetworkChangeReceiver就会收到所有值为android.net.conn.CONNECTIVITY_CHANGE的广播。   注意动态注册的广播接收器一定要取消注册才行这里在onDestroy()方法中通过调用unregisterReceiver()方法来实现。 代码如下所示 protected void onDestroy() {super.onDestroy();//动态注册的广播接收器一定要取消注册unregisterReceiver(networkChangeReceiver);}   Android系统为了保证应用程序的安全性做了规定如果程序要访问一些系统的关键性信息必须要在AndroidManifest.xml文件中声明权限才可以。 例如下面的代码中就为查询系统的网络状态声明的权限代码如下所示 ?xml version1.0 encodingutf-8? manifest xmlns:androidhttp://schemas.android.com/apk/res/androidpackagecom.mfeng.glh.broadcasttest !-- 添加查询系统网络状态的权限声明 --uses-permission android:nameandroid.permission.ACCESS_NETWORK_STATE /applicationandroid:allowBackuptrueandroid:iconmipmap/ic_launcherandroid:labelstring/app_nameandroid:themestyle/AppTheme activityandroid:name.MainActivityandroid:labelstring/app_name intent-filteraction android:nameandroid.intent.action.MAIN /category android:nameandroid.intent.category.LAUNCHER //intent-filter/activity/application/manifest 运行程序在系统设置中切换网络就可以收到广播消息了。   动态注册的广播可以自由的控制注册和注销但是必须要程序启动以后才能接收广播。 如果想让程序在未启动的情况下接收广播就要用的静态注册。 下面就使用静态注册的方法接收一条开机广播从而实现开机启动的功能。 新建一个BootCompleteReceiver类继承自BroadcastsReceiver代码如下所示 public class BootCompleteReceiver extends BroadcastReceiver {Overridepublic void onReceive(Context context, Intent intent) {Toast.makeText(context,Boot Complete,Toast.LENGTH_LONG).show();} } 这里就不在使用内部类的方式来定义广播接收器了。在onReceive()方法中简单的弹出一段提示信息。 然后修改AndroidManifest.xml文件代码如下 ?xml version1.0 encodingutf-8? manifest xmlns:androidhttp://schemas.android.com/apk/res/androidpackagecom.mfeng.glh.broadcasttest !-- 添加查询系统网络状态的权限声明 --uses-permission android:nameandroid.permission.ACCESS_NETWORK_STATE /uses-permission android:nameandroid.permission.RECEIVE_BOOT_COMPLETED /applicationandroid:allowBackuptrueandroid:iconmipmap/ic_launcherandroid:labelstring/app_nameandroid:themestyle/AppTheme activityandroid:name.MainActivityandroid:labelstring/app_name intent-filteraction android:nameandroid.intent.action.MAIN /category android:nameandroid.intent.category.LAUNCHER //intent-filter/activityreceiver android:name.BootCompleteReceiver intent-filteraction android:nameandroid.intent.action.BOOT_COMPLETED //intent-filter/receiver/application/manifest 上面的代码中在application标签内出现了一个新的标签receiver所有静态注册的广播接收器都是在这里进行注册的。 其中android:name指定具体注册哪一个广播接收器然后在intent-filter标签中加入想要接收的广播就行了。 注意监听系统开机广播也是需要声明权限的。 重新运行程序就可以接收开机广播了。打开系统的应用程序管理界面查看一下当前程序所拥有的权限 如下图所示 从图中可以看到程序查看网络连接状态和开机启动的权限。转载于:https://www.cnblogs.com/mffeng/p/4743706.html
http://www.yutouwan.com/news/257857/

相关文章:

  • 做网站有哪些流程对网站建设的调研报告
  • 织梦程序来搭建网站顺义企业建站
  • 常州制作网站软件苏州建设信息网
  • 网站建设需要注意什么战队头像logo免费自动生成器
  • 微网站开发视频湖州网站集约化平台
  • 网站栏目定位手机网站建设公司电话咨询
  • 佛山模板建站定制网站广州网站建设首选快优
  • ftp 修改网站网站批量收录
  • pc网站还有必要做吗企业建设网站风险
  • 沈阳淘宝网站建设海外直购网站建设方案书范文
  • 茶叶网站开发目的和意义桂林网站建设制作
  • 深圳网站建设网站推广方案营销型网站建立
  • 安宁市建设厅网站银川建企业模板网站
  • 素材分享网站源码安全网站开发
  • 有友情链接的网站美食网页设计模板中文
  • 网站建设sql语句留言板头条短链接生成短网址生成
  • 大连门户网站开发公司起名字大全免费3个字
  • 营销型网站的建设要求都有什么莱阳网站建设
  • 厦门网站制作品牌动漫设计主要做什么
  • 宁夏自治区住房与城乡建设厅网站个人备案网站改企业备案
  • 娱乐论坛网站建设方案范文想学网站建设与设计的书籍
  • 运营商网站登录注册怎么做彩票平台网站
  • 扁平风格网站欣赏网站广告位怎么做
  • 网站建设和优化需要几个人静态网页设计作品欣赏
  • 爱站网是什么意思网络广告策划方案怎么做
  • 引航博景网站做的好吗建视频网站系统吗
  • 网站排名易下拉刷词廊坊网站建设招聘
  • 英文网站模版书画网站模板
  • 湖北正规网站建设检修十大网游人气排行榜
  • 网站开发外包 验收17网一起做网店下载