【问题标题】:Android application getting slowAndroid应用程序变慢
【发布时间】:2016-01-21 00:11:44
【问题描述】:

我有一个带有 2 个活动的 Android 应用程序。每个活动都有一个使用 UDP 与服务器通信的 AsyncTask。

 public class MainPostTask extends AsyncTask<String, Integer, String>  {

        @Override
        protected String doInBackground(String... params) 
        { 
           ..... udp comunication here  
        }
  } 

我每 20 秒在这两个活动之间切换一次。

e.g.:
Intent it = new Intent(this, MainActivity.class);
startActivity(it);

省略其他 PostTask 以减少文本。

3 小时后,Android 变得非常缓慢。有时很难关闭应用程序。 我确信我在更改活动之前完成了 AsyncTask。

你知道发生了什么吗?如何配置 Android 以查看内存/cpu 等?

我也使用 Log.d()。当我插入电缆时,所有缓冲的消息都会输出到 logcat。您认为此日志消息会导致问题吗?

最好的问候, 安徒生。

【问题讨论】:

    标签: android android-asynctask


    【解决方案1】:

    您提供的代码很少。也许你没有关闭连接。也许你的任务没有被删除和固定。 学习以下材料:

    Profiling with Traceview and dmtracedump (SO source)

    【讨论】:

      【解决方案2】:

      您是否总是通过调用 startActivity 来更改活动?如果是这样,您正在堆叠活动。不要那样做。

      你想通过切换任务来完成什么?回答这个问题会让我们知道如何最好地处理您的情况。

      【讨论】:

      • 是的,我总是更改调用 startActivity() 的活动。每 20 秒我连接到服务器并更改屏幕 5 秒。之后,我返回主屏幕。我永远重复这个过程。如何在不调用 start Activity() 的情况下更改活动?我是安卓新手。最好的问候
      • 如果你想改变屏幕,只需使用 View.setVisibility(View.GONE) 和 View.setVisibility(View.VISIBLE)。您的单个活动将有一个布局。布局将有两个大子视图。只需在这些之间切换。或者返回时,调用finish()而不是调用MainActivity。
      • 问题我有 2 个布局 (.xml)。有没有其他方法可以改变活动?
      • 现在我在函数onPause()中调用finish();它会起作用吗?问候
      • 我看不到你的代码,但我猜“不会”。什么会导致 onPause 被调用?确实,您应该将两个布局合并为一个并拥有一个活动。不要仅仅因为你想做某事而创建一个新的活动。 AsyncTask 也可以在后台运行。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-29
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多