我想为一套应用程序创建一个中央应用程序.这套应用程序由我们自己和第三方供应商开发.我们想知道实现以下功能的最佳方法
1)从中央应用程序启动子应用程序
子应用程序安装在设备中,子应用程序的包名称由供应商提供.我们考虑使用显式意图来调用子应用程序.从中央应用程序启动子应用程序的任何其他方法.
2)中央和子应用程序之间的通信.
子应用程序没有通信层.来自子应用程序的每个通信都应通过中央应用程序发送到服务器.通信包括GET,POST,PUT请求.我们考虑使用Broad Cast接收器将有效载荷发送到中央应用程序.中央应用程序将依次将有效负载发送到服务器.但广播接收器对Android Oreo的限制将使这种解决方案不可行.
3)当用户在中央应用程序中执行注销时,从中央应用程序启动关闭子应用程序.
我们正在考虑使用作为ActivityManager一部分提供的killBackgroundProcesses()API来终止进程.杀死进程的任何其他解决方案?使用此API杀死进程有任何负面影响吗?
4)将事件从中央应用程序发布到子应用程序以进行消费.
我们想到广播接收器将事件从中央发布到子应用程序.但如上所述,Android Oreo上的广播接收器限制将使这种解决方案不可行.任何替代方案?
我正在将应用程序上传到实施GCM的Google Play商店.
如何在上传到Google Play商店时为该应用启用GCM?有一个名为"启用Google Cloud Messaging Stats"的部分.
尝试修改GCM Sender Id时出现此错误:
无效的GCM API密钥或C2DM客户端登录令牌(错误密钥).
任何人都可以解释在上传到Android市场时为应用程序启用GCM的步骤.
尝试在以下链接中实现动画https://dribbble.com/shots/1753718-Chat-Screen-UX-UI-iOS-App.附上我们迄今为止尝试过的内容.无法准确再现动画.分享您对如何实施它的想法.
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
View view = convertView;
if (view == null) {
viewHolder = new ViewHolder();
view = mInflater.inflate(R.layout.rowlayout, null);
viewHolder.textView = (TextView) view.findViewById(R.id.textView);
view.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) view.getTag();
}
viewHolder.textView.setText(mItems.get(position));
animate(view, position);
return view;
}
private void animate(View target, int index){
Animation animtopOut = AnimationUtils.loadAnimation(mContext, R.anim.slide_top_to_bottom);
animtopOut.setStartOffset(index * 100);
target.startAnimation(animtopOut);
}
Run Code Online (Sandbox Code Playgroud)
附加动画资源文件
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<translate android:fromYDelta="-100%" android:toYDelta="0"
android:duration="100" />
<alpha …Run Code Online (Sandbox Code Playgroud)