| |
1 /* This Source Code Form is subject to the terms of the Mozilla Public |
| |
2 * License, v. 2.0. If a copy of the MPL was not distributed with this file, |
| |
3 * You can obtain one at http://mozilla.org/MPL/2.0/. */ |
| |
4 |
| |
5 package org.mozilla.gecko; |
| |
6 |
| |
7 import android.content.ComponentName; |
| |
8 import android.content.Intent; |
| |
9 import android.support.v4.app.FragmentActivity; |
| |
10 |
| |
11 public class GeckoActivity extends FragmentActivity implements GeckoActivityStatus { |
| |
12 // has this activity recently started another Gecko activity? |
| |
13 private boolean mGeckoActivityOpened = false; |
| |
14 |
| |
15 /** |
| |
16 * Display any resources that show strings or encompass locale-specific |
| |
17 * representations. |
| |
18 * |
| |
19 * onLocaleReady must always be called on the UI thread. |
| |
20 */ |
| |
21 public void onLocaleReady(final String locale) { |
| |
22 } |
| |
23 |
| |
24 @Override |
| |
25 public void onPause() { |
| |
26 super.onPause(); |
| |
27 |
| |
28 if (getApplication() instanceof GeckoApplication) { |
| |
29 ((GeckoApplication) getApplication()).onActivityPause(this); |
| |
30 } |
| |
31 } |
| |
32 |
| |
33 @Override |
| |
34 public void onResume() { |
| |
35 super.onResume(); |
| |
36 |
| |
37 if (getApplication() instanceof GeckoApplication) { |
| |
38 ((GeckoApplication) getApplication()).onActivityResume(this); |
| |
39 mGeckoActivityOpened = false; |
| |
40 } |
| |
41 } |
| |
42 |
| |
43 @Override |
| |
44 public void onCreate(android.os.Bundle savedInstanceState) { |
| |
45 super.onCreate(savedInstanceState); |
| |
46 if (AppConstants.MOZ_ANDROID_ANR_REPORTER) { |
| |
47 ANRReporter.register(getApplicationContext()); |
| |
48 } |
| |
49 } |
| |
50 |
| |
51 @Override |
| |
52 public void onDestroy() { |
| |
53 if (AppConstants.MOZ_ANDROID_ANR_REPORTER) { |
| |
54 ANRReporter.unregister(); |
| |
55 } |
| |
56 super.onDestroy(); |
| |
57 } |
| |
58 |
| |
59 @Override |
| |
60 public void startActivity(Intent intent) { |
| |
61 mGeckoActivityOpened = checkIfGeckoActivity(intent); |
| |
62 super.startActivity(intent); |
| |
63 } |
| |
64 |
| |
65 @Override |
| |
66 public void startActivityForResult(Intent intent, int request) { |
| |
67 mGeckoActivityOpened = checkIfGeckoActivity(intent); |
| |
68 super.startActivityForResult(intent, request); |
| |
69 } |
| |
70 |
| |
71 private static boolean checkIfGeckoActivity(Intent intent) { |
| |
72 // Whenever we call our own activity, the component and its package name is set. |
| |
73 // If we call an activity from another package, or an open intent (leaving android to resolve) |
| |
74 // component has a different package name or it is null. |
| |
75 ComponentName component = intent.getComponent(); |
| |
76 return (component != null && |
| |
77 AppConstants.ANDROID_PACKAGE_NAME.equals(component.getPackageName())); |
| |
78 } |
| |
79 |
| |
80 @Override |
| |
81 public boolean isGeckoActivityOpened() { |
| |
82 return mGeckoActivityOpened; |
| |
83 } |
| |
84 |
| |
85 public boolean isApplicationInBackground() { |
| |
86 return ((GeckoApplication) getApplication()).isApplicationInBackground(); |
| |
87 } |
| |
88 |
| |
89 @Override |
| |
90 public void onLowMemory() { |
| |
91 MemoryMonitor.getInstance().onLowMemory(); |
| |
92 super.onLowMemory(); |
| |
93 } |
| |
94 |
| |
95 @Override |
| |
96 public void onTrimMemory(int level) { |
| |
97 MemoryMonitor.getInstance().onTrimMemory(level); |
| |
98 super.onTrimMemory(level); |
| |
99 } |
| |
100 } |