小编Ash*_*Ash的帖子

Android应用程序应如何响应环境中的关键变化?

假设有一个应用程序在AccountManager中创建一个帐户.用户Accounts and Sync暂时浏览此应用程序的相当复杂的活动图,然后转到Android设置,删除帐户并登录(仍然Accounts and Sync作为不同的用户.

我已经为LOGIN_ACCOUNTS_CHANGED广播定义了一个接收器,我可以优雅地关闭所有服务.但是活动仍然存在,在其标题中带有第一个用户的名称(UI以多种方式搞砸了,但这个是最明显的).

所以,问题是:应该对这些孤儿活动做些什么?

  • 我可以使用类似的东西clearTaskOnLaunch,但是当变化发生时,所有活动都在后台.
  • 在SharedPreferences中设置一个标志并检入onResume()每个活动,然后clearTask在需要时启动活动?太乱了.
  • 我能想出的最佳选择是android.os.Process.killProcess(android.os.Process.myPid())用来杀死所有活动.这不是太优雅,但可以完成工作.唯一的副作用是活动堆栈仍然存在,当最合理的事情似乎是从LAUNCHER活动开始,具有明确的历史.

那么,回应描述场景的最佳方式是什么?

android

10
推荐指数
1
解决办法
577
查看次数

在android中的shapes.xml里面的Multipe形状

我一直在寻找在单个shapes.xml中定义不同形状的可能性,并在某些特定事件中引用每个形状.

最后我找到了解决问题的方法.答案是使用级别列表.

<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:maxLevel="0">
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
          
        <gradient android:startColor="#aaa" 
            android:endColor="#eee" android:angle="270" />
           
        <corners android:bottomRightRadius="7dp"
            android:bottomLeftRadius="7dp" android:topLeftRadius="7dp"
            android:topRightRadius="7dp" />
    </shape>

</item>
<item android:maxLevel="1">
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="oval">
          
        <gradient android:startColor="#eee" android:centerColor="#ddd"
            android:endColor="#00fff2" android:angle="270" />
           
        <corners android:bottomRightRadius="7dp"
            android:bottomLeftRadius="7dp" android:topLeftRadius="7dp"
            android:topRightRadius="7dp" />
    </shape>
</item>
</level-list>
Run Code Online (Sandbox Code Playgroud)

将其应用于样式中的background属性.通过将级别设置为该元素,可以实现不同形状的交换.

例如: findViewById(R.id.mybutton).getBackground().setLevel(1);

在上面的代码中,我将第二个形状设置为id为mybutton的按钮.

android shapes

7
推荐指数
1
解决办法
5761
查看次数

标签 统计

android ×2

shapes ×1