博主即将硕士毕业,最近一直在忙乎毕业设计的开发。
毕业设计要做的是一个移动广告平台。要做成库,方便其他开发者添加到自己开发的应用当中。与其他广告平台不同,这次要开发的平台搭载的是公益广告,没有直接的广告收益。而且针对公益广告,添加了自动管理广告来源和内容推送功能。说白了就是个加强版的AdMob。开发从Android版本开始,所以最近一直就在捣鼓 GCM 的使用。开发途中发现 Google的 C2DM 改版成 GCM 以后,在国内找不到太多的资料。不知道是不是在这些领域国人跟进的速度是不是稍微慢了一些。。
言归正传,这次我要说明的是在非Activity的环境中怎么架设Intent,来启动Activity。

我们都知道 在Android编程中,Activity和Activity之间的切换是要用到Intent来牵线搭桥的。然而我却遇到了这样的一个问题:我要用Notification 来在通知栏里显示推送的消息。点击消息弹出某个搭载了广告的Activity来显示广告。弹出Activity 就需要用到Intent,但创建Intent的时候最常用的两个变量,Context 和 Activity 的Class,我们都没有,怎么办?
像这样:
new Intent(Context context, Class<?> cls);

我们一般在Activity中使用的时候:
 new Intent(this, XXXActivity.class);


我们收到推送的时候,应用大多是关闭着的,那么这个Intent的出发点,我们就没有。尤其当我们设置Notification的时候,如果只是在一般的类里头,而不是在Activity中的话,我们就需要导入一个任意Activity的Context。

然后在我将做好的代码打包成库的时候,发现一个问题,我要做的是一个广告条,只有一个View,不包含任何Activity,那么在创建Intent的时候,第二个变量也不是固定的。也就是说,在点击Notification的时候跳转到哪个Activity也得由开发者自己定义,所以也需要留出一个接口给开发者。

下面就是我的做法: 在一个全局类中生命两个全局变量,Context context, 和 Class<?> cls.
在主View(因为我的库就是提供给开发者一个广告View)中,写一个方法,接受这两个变量。

public void loadAd(Context context, Class<?> cls){Util.setContext(context);Uril.setActivity(cls);}


class Util{private static Context context;private static Class<?> cls;public static void setContext(Context arg0){context = arg0;}public static Context getContext(){return context;}public static void setActivity (Class<?> arg0){cls = arg0;}public static Class<?> getActivity(){return cls;}}


期中的loadAd()方法是搭载广告View后必须运行的方法。
Util 类就是用来保存Context 和 Activity全局变量的类。
这样一来两个变量都弄到手,以后直接调用就可以了。

在这里再说明一下,以前看过有的帖子里说明说用一下的方法也能运行Intent,但是我试过了,在打包成库的情况下,这个方法不好使~!
//new Intent(context,context.getClass());


好,就这样!

更多相关文章

  1. 安卓国内开发者陷盈利困局 版本过多支付不畅
  2. 使用HBuilder打包Android和iOS,并上线
  3. 【工作感悟】Android(安卓)开发者,如何提升自己的职场竞争力?
  4. 对 Android(安卓)开发者有益的 40 条优化建议
  5. 热更新-Android与Lua相互通信
  6. 打造一体式广告轮播条升级版
  7. 3.2、Android(安卓)Studio在物理设备中运行APP
  8. 安卓开发者必备的5款App:终端模拟器、颜色萃取、移动IDE等
  9. 如何在Android应用中加入广告

随机推荐

  1. Android(安卓)Studio基本常用快捷键
  2. 揭秘uc浏览器三
  3. Android(安卓)测试工具,实时抓被测app cra
  4. Android(安卓)RectF()用法
  5. 说说Android的广播(5) - 广播的历史
  6. eclipse工程转入android studio后碰见的
  7. 由packagename得到应用程序信息
  8. AMS浅析
  9. Android(安卓)RoboGuice 使用指南(12):如
  10. 跨平台的多线程断点续传下载库