AppWidget

作者: cong | 来源:发表于2014-08-11 22:26 被阅读0次

AppWidget就是桌面上显示天气,日期,时间那东西。有了它有些信息你就不需要点开另外的应用去获取了。
显示信息的进程是桌面程序,而提供信息和操作响应的是各个AppWidget的应用。它们运行在不同的进程,那么怎么把一个应用中的界面和相关操作信息在另外一个进程中实例化呢?
那就又回到android进程间通信:那肯定是binder了。为了使两个应用能断开关系,android主进程专门开了一个服务线程去管理他们俩个的关系。
具体的实现等有空了再瞅瞅源码,现在来看看怎么去使用他们。
1.那个服务线程必须知道,所有App Widget的信息,那就要求每个widget必须声明自己的信息,用最普遍的xml包括布局信息;
2.当你把一个widget拖到桌面时,桌面程序需要从服务线程中获取相关信息,并实例化界面对象;
3.实例化对象时,也要实例化它的操作相关信息,如点击操作之类;
4.其实是这样的,当桌面程序要在桌面上构建实例化一个界面并绑定事件时,会先向服务请求,服务再发信息给widget,widget需要把相关信息封装(布局了,点击事件了)在RemoteView中,然后报告给服务updateAppWidget,服务再把信息给桌面,桌面才能完成构造。
5.当一个点击事件发生时,一般是要发给widget信息,因为只有通过widget才能去调用updateAppWidget去更新桌面上那个显示的界面。在桌面程序中是干涉不了那个界面的。只有两种方式可以去改变它,一是它自身,二是widget。
6.为什么在widget中不能自定义view并传递给桌面?
通过实验发现,自定义的view在桌面中是找不到该类的,因为他们位于不同的进程,那为什么TextView可以呢?!
因为它在framework中,每个应用进程都可以访问它。
这就是公司同事解决的办法,自己写了个放到了framework中。
那为什么mtk居然在自己的package下的widget中放有自定义的view呢?
有待考察。

以上是现在的总结,等有空看看源码再来个重写。

相关文章

  • Android 自动创建AppWidget

    1.创建AppWidget AppWidget和Launcher,在早期Android被用的很泛滥。最近产品有需求...

  • AppWidget

    AppWidgetmonitorandroid 7.0WorkManager 替代 JobSchedulerCon...

  • AppWidget

    AppWidget就是桌面上显示天气,日期,时间那东西。有了它有些信息你就不需要点开另外的应用去获取了。显示信息的...

  • Android桌面小部件AppWidget开发

    什么是AppWidget AppWidget 即桌面小部件,也叫桌面控件,就是能直接显示在Android系统桌面上...

  • Android AppWidget

    Read The Fucking Source Code 引言 Android AppWidget相对偏冷门。 开...

  • android widget

    什么是AppWidget?AppWidget就是我们平常在桌面上见到的那种一个个的小窗口,利用这个小窗口可以给用户...

  • Android里的AppWidget

    什么是AppWidget?AppWidget就是我们平常在桌面上见到的那种一个个的小窗口,利用这个小窗口可以给用户...

  • Android Framework 全家桶

    Read The Fucking Source Code 引言 基础为王。 Android AppWidget[h...

  • pendingIntent 以及AppWidget

    和navigation有关的pendingintent的创建 pengdingintent大家都知道一般是用在广播...

  • App Widget的开发精要

    在 AndroidManifest 中声明 标签, 用name属性指定继承自AppWidget...

网友评论

      本文标题:AppWidget

      本文链接:https://www.haomeiwen.com/subject/jveetttx.html