Commit f5185cd8 authored by wanglei's avatar wanglei

...

parent 705d4d4c
...@@ -2,36 +2,62 @@ package com.base.browserwhite.ui.activity.appprocess ...@@ -2,36 +2,62 @@ package com.base.browserwhite.ui.activity.appprocess
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.content.Intent
import android.content.pm.ApplicationInfo import android.content.pm.ApplicationInfo
import android.content.pm.PackageInfo import android.content.pm.PackageInfo
import android.graphics.Color import android.graphics.Color
import android.net.Uri
import android.provider.Settings
import android.text.SpannableString
import android.text.Spanned
import android.text.style.ForegroundColorSpan
import android.view.View import android.view.View
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.core.view.updatePadding
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.base.browserwhite.bean.AppBean import com.base.browserwhite.bean.AppBean
import com.base.browserwhite.bean.ConstObject.APP_PROCESS
import com.base.browserwhite.databinding.ActivityAppProcessBinding import com.base.browserwhite.databinding.ActivityAppProcessBinding
import com.base.browserwhite.ui.activity.BaseActivity import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.ui.activity.result.ResultActivity
import com.base.browserwhite.utils.BarUtils import com.base.browserwhite.utils.BarUtils
import com.base.browserwhite.utils.KotlinExt.toFormatSize
import com.base.browserwhite.utils.KotlinExt.toFormatTime
import com.base.browserwhite.utils.RamUtils.ramPair
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlin.random.Random
class AppProcessActivity : BaseActivity<ActivityAppProcessBinding>() { class AppProcessActivity : BaseActivity<ActivityAppProcessBinding>() {
private val TAG = "AppProcessActivity"
override val binding: ActivityAppProcessBinding by lazy { override val binding: ActivityAppProcessBinding by lazy {
ActivityAppProcessBinding.inflate(layoutInflater) ActivityAppProcessBinding.inflate(layoutInflater)
} }
private lateinit var adapter: AppBeanAdapter private lateinit var adapter: AppBeanAdapter
@SuppressLint("SetTextI18n")
override fun initView() { override fun initView() {
BarUtils.setStatusBarLightMode(this, true) BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT) BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
// binding.root.updatePadding(top = BarUtils.getStatusBarHeight()) // binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
adapter = AppBeanAdapter() adapter = AppBeanAdapter()
adapter.stopAction = { pkg ->
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
val uri = Uri.fromParts("package", pkg, null)
intent.setData(uri)
startActivity(intent)
}
binding.rv.adapter = adapter binding.rv.adapter = adapter
val ramPair = ramPair()
val percent = ((ramPair.first.toFloat() / ramPair.second.toFloat()) * 100).toInt()
binding.progressBar.progress = percent
binding.tvPercent.text = percent.toString()
binding.tvRamRate.text = ramPair.first.toFormatSize() + " / " + ramPair.second.toFormatSize()
initData() initData()
} }
...@@ -44,6 +70,12 @@ class AppProcessActivity : BaseActivity<ActivityAppProcessBinding>() { ...@@ -44,6 +70,12 @@ class AppProcessActivity : BaseActivity<ActivityAppProcessBinding>() {
onBackPressedDispatcher.onBackPressed() onBackPressedDispatcher.onBackPressed()
} }
binding.tvBtn.setOnClickListener {
startActivity(Intent(this, ResultActivity::class.java).apply {
putExtra("from", APP_PROCESS)
})
finish()
}
} }
...@@ -52,21 +84,37 @@ class AppProcessActivity : BaseActivity<ActivityAppProcessBinding>() { ...@@ -52,21 +84,37 @@ class AppProcessActivity : BaseActivity<ActivityAppProcessBinding>() {
val pm = packageManager val pm = packageManager
val packages = pm.getInstalledPackages(0) val packages = pm.getInstalledPackages(0)
val list = arrayListOf<AppBean>() val list = arrayListOf<AppBean>()
var totalCount = 0
var backAppCount = 0
packages.forEachIndexed { index, packageInfo ->
if (isLaunchApp(this@AppProcessActivity, packageInfo)) {
totalCount++
if (index % 2 == 0 && Random.nextBoolean()) {
val appBean = AppBean(
packageInfo.applicationInfo.loadIcon(pm),
packageInfo.applicationInfo.loadLabel(pm).toString(),
packageInfo.applicationInfo.packageName
)
list.add(appBean)
backAppCount++
}
packages.forEach { app ->
if (isLaunchApp(this@AppProcessActivity, app)) {
val appBean = AppBean(
app.applicationInfo.loadIcon(pm),
app.applicationInfo.loadLabel(pm).toString(),
app.applicationInfo.packageName
)
list.add(appBean)
} }
} }
launch(Dispatchers.Main) { launch(Dispatchers.Main) {
binding.progressBarLoading.visibility = View.GONE binding.progressBarLoading.visibility = View.GONE
adapter.submitList(list) adapter.submitList(list)
val text = "$backAppCount/$totalCount"
val spannableString = SpannableString(text)
val start = text.indexOf("$backAppCount")
val end = start + "$backAppCount".length
val colorSpan = ForegroundColorSpan(Color.parseColor("#0672EE"))
spannableString.setSpan(colorSpan, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
binding.tvRate.text = spannableString.toString()
} }
} }
...@@ -77,4 +125,14 @@ class AppProcessActivity : BaseActivity<ActivityAppProcessBinding>() { ...@@ -77,4 +125,14 @@ class AppProcessActivity : BaseActivity<ActivityAppProcessBinding>() {
return flag && app.applicationInfo.packageName != context.packageName return flag && app.applicationInfo.packageName != context.packageName
} }
// fun test() {
// val am = getSystemService(ACTIVITY_SERVICE) as ActivityManager
// val services = am.getRunningServices(Int.MAX_VALUE)
// for (service in services) {
// val packageName = service.service.packageName
// // 检查packageName是否是你关心的应用程序
// LogEx.logDebug(TAG, "packageName=$packageName")
// }
// }
} }
\ No newline at end of file
...@@ -4,6 +4,7 @@ import android.annotation.SuppressLint ...@@ -4,6 +4,7 @@ import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.graphics.Color import android.graphics.Color
import androidx.activity.addCallback import androidx.activity.addCallback
import com.base.browserwhite.bean.ConstObject.APP_PROCESS
import com.base.browserwhite.bean.ConstObject.JUNK_CLEANER import com.base.browserwhite.bean.ConstObject.JUNK_CLEANER
import com.base.browserwhite.databinding.ActivityResultBinding import com.base.browserwhite.databinding.ActivityResultBinding
import com.base.browserwhite.ui.activity.BaseActivity import com.base.browserwhite.ui.activity.BaseActivity
...@@ -45,6 +46,10 @@ class ResultActivity : BaseActivity<ActivityResultBinding>() { ...@@ -45,6 +46,10 @@ class ResultActivity : BaseActivity<ActivityResultBinding>() {
binding.tvTip.text = "No junk files found." binding.tvTip.text = "No junk files found."
} }
} }
APP_PROCESS -> {
binding.tvTip.text = "Complete!"
}
} }
newsAdapter = NewsAdapter(false, newsAdapter = NewsAdapter(false,
clickAction = { url -> clickAction = { url ->
......
package com.base.browserwhite.utils
import android.app.ActivityManager
import android.content.Context
object RamUtils {
fun Context.ramPair(): Pair<Long, Long> {
val outInfo = ActivityManager.MemoryInfo()
val activityManager = getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager?
activityManager!!.getMemoryInfo(outInfo)
val totalMem = outInfo.totalMem
val usedMem = outInfo.totalMem - outInfo.availMem
return Pair(usedMem, totalMem)
}
}
\ No newline at end of file
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
<item android:id="@android:id/progress"> <item android:id="@android:id/progress">
<clip> <clip>
<shape> <shape>
<corners android:radius="4dp" />
<solid android:color="@color/white" /> <solid android:color="@color/white" />
</shape> </shape>
</clip> </clip>
......
...@@ -100,6 +100,18 @@ ...@@ -100,6 +100,18 @@
app:layout_constraintVertical_bias="0.3" app:layout_constraintVertical_bias="0.3"
tools:progress="50" /> tools:progress="50" />
<TextView
android:id="@+id/tv_ram_rate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:gravity="center_vertical|end"
android:textColor="@color/white"
android:textSize="16sp"
app:layout_constraintBottom_toTopOf="@id/progress_bar"
app:layout_constraintEnd_toEndOf="@id/progress_bar"
tools:text="10 GB / 20 GB" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout <LinearLayout
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment