android开发问题:如何在当前Acitivity中用代码获取上一个Activity名称?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android开发问题:如何在当前Acitivity中用代码获取上一个Activity名称?相关的知识,希望对你有一定的参考价值。

就是说判断当前Activity是从哪个Activity跳转过来的

需要在跳转的Intent对象中添加一个参数:

intent.putExtra("comeFrom", activityName);

跳转到目标activity时带上当前activity的名字,这样才知道是从哪里跳转进来的。

参考技术A 可以写一个List 每打开一个Activity 都添加进去。这样就能获得上一个activity了。 退出客户端的时候 很多都是这么操作的 把这些activity相应finish掉。 参考技术B 在上一个activity里把activity的名称传出去,然后在当前activity里获取就行了 参考技术C 上一个activity里把activity的名称传出去,然后在当前activity里获取不就行了?追问

额 已经解决了 把分给你吧

本回答被提问者采纳

activiti 全局流程监听ActivitiEventListener,实现监听不同类型事件,不需要在acitivit中配置任务监听,非常方便

如果我们像给任务配置监听,按照常规的做法是这样的

一个个配置,比较麻烦。

现在利用ActivitiEventListener,监听全局事件,并且可以判断不同的事件类型,进而执行不同的业务逻辑。

1.定义事件处理handler接口

用接口来定义统一约定

public interface EventHandler 
    void handle(ActivitiEvent event);


2.实现不同事件

任务结束事件

 */
public class TaskCompleteListener implements EventHandler 

    protected Logger logger = LoggerFactory.getLogger(getClass());
    @Override
    public void handle(ActivitiEvent event) 
        ActivitiEntityEventImpl eventImpl = (ActivitiEntityEventImpl) event;
        TaskEntity taskEntity = (TaskEntity) eventImpl.getEntity();
   

    

任务创建事件

public class TaskCreateListener implements EventHandler 

    protected Logger logger = LoggerFactory.getLogger(getClass());

    @Override
    public void handle(ActivitiEvent event) 
        ActivitiEntityEventImpl eventImpl = (ActivitiEntityEventImpl) event;
        TaskEntity taskEntity = (TaskEntity) eventImpl.getEntity();
        
    


还有很多事件,比如TASK_ASSIGNED,PROCESS_STARTED,PROCESS_COMPLETED

3.实现ActivitiEventListener

public class GlobalEventListener implements ActivitiEventListener 
    protected Logger logger = LoggerFactory.getLogger(getClass());
    /**
     * 各类 Event 的处理器
     */
    private Map<ActivitiEventType, EventHandler> handlers = new HashMap<ActivitiEventType, EventHandler>();



    @Override
    public void onEvent(ActivitiEvent event) 
        EventHandler eventHandler = handlers.get(event.getType());
        if(eventHandler!=null)
            eventHandler.handle(event);
        
    

    @Override
    public boolean isFailOnException() 
        return false;
    

    public Map<ActivitiEventType, EventHandler> getHandlers() 
        return handlers;
    

    public void setHandlers(Map<ActivitiEventType, EventHandler> handlers) 
        this.handlers = handlers;
    

4.注册事件监听

 <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
        <property name="dataSource" ref="dataSource"/>
        <property name="transactionManager" ref="transactionManager"/>
        <property name="databaseSchemaUpdate" value="true"/>
        <property name="jobExecutorActivate" value="false"/>
        <property name="history" value="full"/>
        <property name="processDefinitionCacheLimit" value="10"/>

        <!-- 生成流程图的字体 -->
        <property name="activityFontName" value="宋体"/>
        <property name="labelFontName" value="宋体"/>
        <property name="annotationFontName" value="宋体"/>
        <!-- 自动部署 -->
        <property name="deploymentResources">
            <list>
                <value>classpath*:*</value>
            </list>
        </property>
        <!--  <property name="idGenerator" ref="idGenerator"/>-->
        <property name="eventListeners">
            <list>
                  <ref bean="globalEventListener"/>
            </list>
        </property>
        <property name="customFormTypes">
            <bean class="org.activiti.engine.impl.form.DateFormType">
                <constructor-arg value="yyyy-MM-dd HH:mm:ss"/>
            </bean>
        </property>
    </bean>

    <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
        <property name="processEngineConfiguration" ref="processEngineConfiguration"/>
    </bean>

    <bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService"/>
    <bean id="runtimeService" factory-bean="processEngine" factory-method="getRuntimeService"/>
    <bean id="formService" factory-bean="processEngine" factory-method="getFormService"/>
    <bean id="identityService" factory-bean="processEngine" factory-method="getIdentityService"/>
    <bean id="taskService" factory-bean="processEngine" factory-method="getTaskService"/>
    <bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService"/>
    <bean id="managementService" factory-bean="processEngine" factory-method="getManagementService"/>

    <!--流程全局事件处理器-->
    <bean id="globalEventListener" class="GlobalEventListener">
         <property name="handlers">
             <map>
                 <entry key="TASK_CREATED">
                     <bean class="TaskCreateListener"/>
                 </entry>
                   <entry key="TASK_COMPLETED">
                     <bean class="TaskCompleteListener"/>
                   </entry>
             </map>
         </property>
     </bean>

优点

  • 这样代码清晰,业务逻辑解耦,单一职责
  • 省去在bpmn.xml中配置,方便。

以上是关于android开发问题:如何在当前Acitivity中用代码获取上一个Activity名称?的主要内容,如果未能解决你的问题,请参考以下文章

当前Android开发人员如何提升岗位竞争力

android XXXActivity和getApplicationContext()差别

Activity生命周期

android app开发 如何在程序中判断当前用的是哪款手机?

在Android开发中如何判读当前设备是否连接网络

如何使用 LocationManager 在 android 中获取当前位置