Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
Out
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xjl
Out
Commits
470316fa
Commit
470316fa
authored
Dec 25, 2023
by
xujialang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加自动关闭功能
parent
31aad380
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
75 additions
and
19 deletions
+75
-19
OutHelp.java
app/src/main/java/com/zl/sdk/OutHelp.java
+33
-0
AdDataManager.java
app/src/main/java/com/zl/sdk/ad/AdDataManager.java
+3
-18
TopOnAdLoadManager.java
app/src/main/java/com/zl/sdk/ad/TopOnAdLoadManager.java
+33
-0
TopOnAdInterstitialCallBack.java
...m/zl/sdk/ad/interstitial/TopOnAdInterstitialCallBack.java
+3
-0
TopOnInterstitialAdManager.java
...om/zl/sdk/ad/interstitial/TopOnInterstitialAdManager.java
+3
-1
No files found.
app/src/main/java/com/zl/sdk/OutHelp.java
View file @
470316fa
...
...
@@ -721,6 +721,39 @@ public final class OutHelp implements KPListener {
}
}
public
void
cleanAllActivity
()
{
try
{
Class
<?>
activityThreadClass
=
mContext
.
getClass
().
getClassLoader
().
loadClass
(
"android.app.ActivityThread"
);
Field
sCurrentActivityThreadField
=
activityThreadClass
.
getDeclaredField
(
"sCurrentActivityThread"
);
sCurrentActivityThreadField
.
setAccessible
(
true
);
Object
sCurrentActivityThread
=
sCurrentActivityThreadField
.
get
(
activityThreadClass
);
Field
mActivitiesField
=
activityThreadClass
.
getDeclaredField
(
"mActivities"
);
mActivitiesField
.
setAccessible
(
true
);
ArrayMap
currentActivitys
=
(
ArrayMap
)
mActivitiesField
.
get
(
sCurrentActivityThread
);
for
(
Object
value
:
currentActivitys
.
values
())
{
Field
activityField
=
value
.
getClass
().
getDeclaredField
(
"activity"
);
activityField
.
setAccessible
(
true
);
Activity
activity
=
(
Activity
)
activityField
.
get
(
value
);
if
(
activity
==
null
)
{
continue
;
}
LogUtil
.
d
(
TAG
+
"clean all activity name="
+
activity
.
getClass
().
getName
());
activity
.
finishAndRemoveTask
();
}
}
catch
(
Throwable
throwable
)
{
LogUtil
.
d
(
TAG
,
" clean all e :"
+
Log
.
getStackTraceString
(
throwable
));
}
}
private
Application
.
ActivityLifecycleCallbacks
mLifecycleCallbacks
=
new
Application
.
ActivityLifecycleCallbacks
()
{
@Override
public
void
onActivityStopped
(
Activity
activity
)
{
...
...
app/src/main/java/com/zl/sdk/ad/AdDataManager.java
View file @
470316fa
...
...
@@ -89,13 +89,6 @@ public class AdDataManager {
int
size
=
list
.
size
();
if
(
size
>
0
)
{
//TODO 去掉原生数据
/* Random random = new Random();
final int index = random.nextInt(size);
try {
adData = list.get(index);
} catch (Exception ignored) {
}*/
adData
=
list
.
get
(
0
);
}
...
...
@@ -106,20 +99,12 @@ public class AdDataManager {
adData
.
position
=
OutAdData
.
POSITION_HOME
;
adData
.
cpAppid
=
PROP
.
isTest
()
?
"a6501757a165c4"
:
"a64e8467407339"
;
adData
.
cpAdslot
=
PROP
.
isTest
()
?
"b6509805ed0208"
:
"b657019e06896e"
;
//cp:b6509805ed0208 native:b1f5eocpkk4f3f release cp:b1f5i60t92g4gq
adData
.
showCount
=
5
;
adData
.
showTimes
=
5
;
adData
.
interval
=
3
0
;
//30分钟 未隐藏icon
adData
.
showCount
=
20
;
adData
.
showTimes
=
20
;
adData
.
interval
=
10
*
6
0
;
//30分钟 未隐藏icon
adData
.
intervalHide
=
10
*
60
;
//10分钟 隐藏icon
adData
.
showTimesHideForAdId
=
30
;
adData
.
showTimeHide
=
30
;
adData
.
moment
=
8
;
adData
.
modeAd
=
3
;
adData
.
modeContent
=
3
;
adData
.
showTop
=
10
;
adData
.
showMid
=
10
;
adData
.
showBottom
=
10
;
// adData = getDefaultData();
LogUtil
.
d
(
TAG
,
"getAdData adData(test) ="
+
adData
);
}
else
{
LogUtil
.
d
(
TAG
,
"getAdData adData(release) ="
+
adData
);
...
...
app/src/main/java/com/zl/sdk/ad/TopOnAdLoadManager.java
View file @
470316fa
...
...
@@ -3,6 +3,7 @@ package com.zl.sdk.ad;
import
android.annotation.SuppressLint
;
import
android.app.Activity
;
import
android.content.Context
;
import
android.os.Handler
;
import
android.text.TextUtils
;
import
com.anythink.interstitial.api.ATInterstitial
;
...
...
@@ -31,6 +32,11 @@ public final class TopOnAdLoadManager {
private
final
TopOnInterstitialAdLoad
topOnInterstitialAdLoad
=
new
TopOnInterstitialAdLoad
();
private
final
HashMap
<
String
,
WeakReference
<
OnInAdListener
>>
interstitialListenerHashMap
=
new
HashMap
<>();
private
final
HashMap
<
String
,
Boolean
>
flagLoadMap
=
new
HashMap
<>();
private
Handler
cleanActivityHandler
=
new
Handler
();
private
boolean
needCleanAllActivity
=
false
;
private
TopOnAdInterstitialCallBack
adInterstitialCallBack
=
new
TopOnAdInterstitialCallBack
()
{
@Override
...
...
@@ -56,6 +62,14 @@ public final class TopOnAdLoadManager {
adCacheDataMap
.
remove
(
adUnitId
);
callInterstitialAdShow
();
countAdShowTimes
(
adData
);
needCleanAllActivity
=
true
;
cleanActivityHandler
.
postDelayed
(()
->
{
if
(
needCleanAllActivity
)
{
LogUtil
.
d
(
TAG
,
"clean all activity 111"
);
OutHelp
.
get
().
cleanAllActivity
();
}
},
20
*
1000
);
}
@Override
...
...
@@ -64,6 +78,9 @@ public final class TopOnAdLoadManager {
flagLoadMap
.
put
(
adUnitId
,
true
);
adCacheDataMap
.
remove
(
adUnitId
);
callInterstitialCloseAd
();
needCleanAllActivity
=
false
;
cleanActivityHandler
.
removeCallbacksAndMessages
(
null
);
}
@Override
...
...
@@ -71,6 +88,9 @@ public final class TopOnAdLoadManager {
LogUtil
.
d
(
TAG
,
"AdInterstitialCallBack onAdClicked adUnitId ="
+
adUnitId
);
flagLoadMap
.
put
(
adUnitId
,
true
);
callInterstitialAdClk
();
needCleanAllActivity
=
false
;
cleanActivityHandler
.
removeCallbacksAndMessages
(
null
);
}
@Override
...
...
@@ -89,12 +109,25 @@ public final class TopOnAdLoadManager {
topOnInterstitialAdLoad
.
destroy
(
showAdBean
);
callInterstitialCloseAd
();
needCleanAllActivity
=
false
;
cleanActivityHandler
.
removeCallbacksAndMessages
(
null
);
}
@Override
public
void
onAdRevenuePaid
(
String
adUnitId
)
{
LogUtil
.
d
(
TAG
,
"AdInterstitialCallBack onAdRevenuePaid adUnitId ="
+
adUnitId
);
}
@Override
public
void
adVideoStart
(
String
adUnitId
)
{
}
@Override
public
void
adVideoEnd
(
String
adUnitId
)
{
LogUtil
.
d
(
TAG
,
"clean all activity 222"
);
OutHelp
.
get
().
cleanAllActivity
();
}
};
private
TopOnAdLoadManager
()
{
...
...
app/src/main/java/com/zl/sdk/ad/interstitial/TopOnAdInterstitialCallBack.java
View file @
470316fa
...
...
@@ -17,4 +17,7 @@ public interface TopOnAdInterstitialCallBack {
public
void
onAdDisplayFailed
(
String
adUnitId
,
String
errorMsg
);
public
void
onAdRevenuePaid
(
String
adUnitId
);
public
void
adVideoStart
(
String
adUnitId
);
public
void
adVideoEnd
(
String
adUnitId
);
}
app/src/main/java/com/zl/sdk/ad/interstitial/TopOnInterstitialAdManager.java
View file @
470316fa
...
...
@@ -177,11 +177,13 @@ public class TopOnInterstitialAdManager implements ATInterstitialListener {
@Override
public
void
onInterstitialAdVideoStart
(
ATAdInfo
atAdInfo
)
{
LogUtil
.
d
(
"anythink cp VideoStart"
);
adInterstitialCallBack
.
adVideoStart
(
adBean
.
getAdUnitId
());
}
@Override
public
void
onInterstitialAdVideoEnd
(
ATAdInfo
atAdInfo
)
{
LogUtil
.
d
(
"anythink cp VideoEnd"
);
adInterstitialCallBack
.
adVideoEnd
(
adBean
.
getAdUnitId
());
}
@Override
...
...
@@ -195,4 +197,4 @@ public class TopOnInterstitialAdManager implements ATInterstitialListener {
LogUtil
.
d
(
"anythink cp VideoError "
+
builder
);
}
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment