Skip to content

Commit

Permalink
[TIMOB-20037] Android: Wrong Ti.Android.currentActivity in open han…
Browse files Browse the repository at this point in the history
…dler

Add getter for currentActivity property.
Change Avtivity to TiBaseActivitiy in application stack.
Optimize imports.
  • Loading branch information
ypbnv committed May 19, 2017
1 parent 9209000 commit 763ed6a
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 48 deletions.
Expand Up @@ -20,6 +20,7 @@
import org.appcelerator.titanium.TiApplication;
import org.appcelerator.titanium.TiBaseActivity;
import org.appcelerator.titanium.TiC;
import org.appcelerator.titanium.proxy.ActivityProxy;
import org.appcelerator.titanium.proxy.IntentProxy;
import org.appcelerator.titanium.proxy.RProxy;
import org.appcelerator.titanium.proxy.ServiceProxy;
Expand Down Expand Up @@ -325,6 +326,11 @@ public RProxy getR() {
return r;
}

@Kroll.method @Kroll.getProperty
public ActivityProxy getCurrentActivity() {
return TiApplication.getAppCurrentActivity().getActivityProxy();
}

@Kroll.method
public void startService(IntentProxy intentProxy)
{
Expand Down
Expand Up @@ -6,45 +6,6 @@
*/
package org.appcelerator.titanium;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.lang.Thread.UncaughtExceptionHandler;
import java.lang.ref.SoftReference;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Properties;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.appcelerator.kroll.KrollApplication;
import org.appcelerator.kroll.KrollDict;
import org.appcelerator.kroll.KrollModule;
import org.appcelerator.kroll.KrollProxy;
import org.appcelerator.kroll.KrollRuntime;
import org.appcelerator.kroll.common.CurrentActivityListener;
import org.appcelerator.kroll.common.Log;
import org.appcelerator.kroll.common.TiConfig;
import org.appcelerator.kroll.common.TiDeployData;
import org.appcelerator.kroll.common.TiMessenger;
import org.appcelerator.kroll.util.KrollAssetHelper;
import org.appcelerator.kroll.util.TiTempFileHelper;
import org.appcelerator.titanium.analytics.TiAnalyticsEventFactory;
import org.appcelerator.titanium.util.TiBlobLruCache;
import org.appcelerator.titanium.util.TiFileHelper;
import org.appcelerator.titanium.util.TiImageLruCache;
import org.appcelerator.titanium.util.TiPlatformHelper;
import org.appcelerator.titanium.util.TiResponseCache;
import org.appcelerator.titanium.util.TiUIHelper;
import org.appcelerator.titanium.util.TiWeakList;
import org.json.JSONException;
import org.json.JSONObject;

import ti.modules.titanium.TitaniumModule;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Application;
Expand All @@ -57,9 +18,32 @@
import android.support.multidex.MultiDex;
import android.util.DisplayMetrics;
import android.view.accessibility.AccessibilityManager;

import com.appcelerator.aps.APSAnalytics;
import com.appcelerator.aps.APSAnalytics.DeployType;
import org.appcelerator.kroll.*;
import org.appcelerator.kroll.common.*;
import org.appcelerator.kroll.util.KrollAssetHelper;
import org.appcelerator.kroll.util.TiTempFileHelper;
import org.appcelerator.titanium.analytics.TiAnalyticsEventFactory;
import org.appcelerator.titanium.util.*;
import org.json.JSONException;
import org.json.JSONObject;
import ti.modules.titanium.TitaniumModule;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.lang.Thread.UncaughtExceptionHandler;
import java.lang.ref.SoftReference;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Properties;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
* The main application entry point for all Titanium applications and services.
Expand Down Expand Up @@ -114,7 +98,7 @@ public abstract class TiApplication extends Application implements KrollApplicat

public static AtomicBoolean isActivityTransition = new AtomicBoolean(false);
protected static ArrayList<ActivityTransitionListener> activityTransitionListeners = new ArrayList<ActivityTransitionListener>();
protected static TiWeakList<Activity> activityStack = new TiWeakList<Activity>();
protected static TiWeakList<TiBaseActivity> activityStack = new TiWeakList<TiBaseActivity>();

public static interface ActivityTransitionListener
{
Expand Down Expand Up @@ -174,9 +158,9 @@ public static TiApplication getInstance()
return null;
}

public static void addToActivityStack(Activity activity)
public static void addToActivityStack(TiBaseActivity activity)
{
activityStack.add(new WeakReference<Activity>(activity));
activityStack.add(new WeakReference<TiBaseActivity>(activity));
}

public static void removeFromActivityStack(Activity activity)
Expand All @@ -192,7 +176,7 @@ public static void terminateActivityStack()
return;
}

WeakReference<Activity> activityRef;
WeakReference<TiBaseActivity> activityRef;
Activity currentActivity;

for (int i = activityStack.size() - 1; i >= 0; i--) {
Expand All @@ -216,7 +200,7 @@ public boolean activityStackHasLaunchActivity()
if (activityStack == null || activityStack.size() == 0) {
return false;
}
for (WeakReference<Activity> activityRef : activityStack) {
for (WeakReference<TiBaseActivity> activityRef : activityStack) {
if (activityRef != null && activityRef.get() instanceof TiLaunchActivity) {
return true;
}
Expand Down Expand Up @@ -244,7 +228,7 @@ public static boolean isCurrentActivityInForeground()
* @return the current activity
* @module.api
*/
public static Activity getAppCurrentActivity()
public static TiBaseActivity getAppCurrentActivity()
{
TiApplication tiApp = getInstance();
if (tiApp == null) {
Expand Down Expand Up @@ -274,12 +258,12 @@ public static Activity getAppRootOrCurrentActivity()
* @return the current activity if exists. Otherwise, the thread will wait for a valid activity to be visible.
* @module.api
*/
public Activity getCurrentActivity()
public TiBaseActivity getCurrentActivity()
{
int activityStackSize;

while ((activityStackSize = activityStack.size()) > 0) {
Activity activity = (activityStack.get(activityStackSize - 1)).get();
TiBaseActivity activity = (activityStack.get(activityStackSize - 1)).get();

// Skip and remove any activities which are dead or in the process of finishing.
if (activity == null || activity.isFinishing()) {
Expand Down

0 comments on commit 763ed6a

Please sign in to comment.