gpt4 book ai didi

android - 当尝试使用 addView 获取 : "Skipped 63 frames! The application may be doing too much work on its main thread" 添加 layoutinflater

转载 作者:行者123 更新时间:2023-11-30 03:21:17 28 4
gpt4 key购买 nike

我正在尝试在 onItemSelected 时添加预制布局。线路有问题:

selectLayout.addView(v);

当我删除这段代码时,它正在运行。

日志:

09-30 08:53:48.493: I/Choreographer(1033): Skipped 63 frames!  The application may be doing too much work on its main thread.
09-30 08:53:48.843: D/gralloc_goldfish(1033): Emulator without GPU emulation detected.
09-30 08:53:48.963: I/Choreographer(1033): Skipped 46 frames! The application may be doing too much work on its main thread.
09-30 08:54:19.894: D/dalvikvm(1033): GC_FOR_ALLOC freed 82K, 7% free 2893K/3096K, paused 135ms, total 170ms
09-30 08:54:19.935: I/dalvikvm-heap(1033): Grow heap (frag case) to 3.543MB for 635812-byte allocation
09-30 08:54:20.124: D/dalvikvm(1033): GC_FOR_ALLOC freed 9K, 6% free 3505K/3720K, paused 183ms, total 183ms
09-30 08:54:20.864: I/Choreographer(1033): Skipped 129 frames! The application may be doing too much work on its main thread.
09-30 08:54:23.363: I/Choreographer(1033): Skipped 91 frames! The application may be doing too much work on its main thread.
09-30 08:54:24.215: D/AndroidRuntime(1033): Shutting down VM
09-30 08:54:24.215: W/dalvikvm(1033): threadid=1: thread exiting with uncaught exception (group=0x41465700)
09-30 08:54:24.264: E/AndroidRuntime(1033): FATAL EXCEPTION: main
09-30 08:54:24.264: E/AndroidRuntime(1033): java.lang.NullPointerException
09-30 08:54:24.264: E/AndroidRuntime(1033): at com.example.fitapp.Select$1.onItemSelected(Select.java:67)
09-30 08:54:24.264: E/AndroidRuntime(1033): at android.widget.AdapterView.fireOnSelected(AdapterView.java:892)
09-30 08:54:24.264: E/AndroidRuntime(1033): at android.widget.AdapterView.access$200(AdapterView.java:49)
09-30 08:54:24.264: E/AndroidRuntime(1033): at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:860)
09-30 08:54:24.264: E/AndroidRuntime(1033): at android.os.Handler.handleCallback(Handler.java:730)
09-30 08:54:24.264: E/AndroidRuntime(1033): at android.os.Handler.dispatchMessage(Handler.java:92)
09-30 08:54:24.264: E/AndroidRuntime(1033): at android.os.Looper.loop(Looper.java:137)
09-30 08:54:24.264: E/AndroidRuntime(1033): at android.app.ActivityThread.main(ActivityThread.java:5103)
09-30 08:54:24.264: E/AndroidRuntime(1033): at java.lang.reflect.Method.invokeNative(Native Method)
09-30 08:54:24.264: E/AndroidRuntime(1033): at java.lang.reflect.Method.invoke(Method.java:525)
09-30 08:54:24.264: E/AndroidRuntime(1033): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
09-30 08:54:24.264: E/AndroidRuntime(1033): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-30 08:54:24.264: E/AndroidRuntime(1033): at dalvik.system.NativeStart.main(Native Method)
09-30 08:54:28.833: I/Process(1033): Sending signal. PID: 1033 SIG: 9
09-30 08:54:32.354: I/Choreographer(1054): Skipped 36 frames! The application may be doing too much work on its main thread.
09-30 08:54:33.263: I/Choreographer(1054): Skipped 36 frames! The application may be doing too much work on its main thread.
09-30 08:54:33.363: D/gralloc_goldfish(1054): Emulator without GPU emulation detected.

这也是我所有的代码。

package com.example.fitapp;

import java.util.HashMap;
import java.util.Map;

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;

public class Select extends Activity{

TextView tvSelect, t;
Spinner sSelect;
LinearLayout selectLayout;
String[] values;
String data;
int count = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.select);

selectLayout = (LinearLayout) findViewById(R.id.saffet);
LayoutInflater inf = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View v = inf.inflate(R.layout.second, null);

final Map<String,String> map = new HashMap<String,String>();
map.put("1", "Kuvvet kazanmak istiyorsun demek?");
map.put("2", "Kas yapmak istiyorsun demek?");
map.put("3", "O lanet olasi yaglari eritelim!");

Resources r = getResources();
values = r.getStringArray(R.array.values);

sSelect = (Spinner) findViewById(R.id.sSelect);
tvSelect = (TextView) findViewById(R.id.tvSelect);

t = new TextView(Select.this);

sSelect.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> av, View view,
int position, long arg3) {
// TODO Auto-generated method stub

if(count!=0)
{
data = values[position];
Dialog d = new Dialog(Select.this);
d.setTitle("Tamam!");
t.setText(map.get(data));
t.setPadding(5, 5, 5, 5);
d.setContentView(t);
d.show();

selectLayout.addView(v);
}

count = count + 1;

}

@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub

}
});

}

}

选择.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/selectLayout"
>

<TextView
android:id="@+id/tvSelect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="Amaç Seçiniz!"
android:textSize="18sp"
android:layout_gravity="center"
/>

<Spinner
android:id="@+id/sSelect"
android:layout_width="179dp"
android:layout_height="60dp"
android:layout_gravity="center"
android:entries="@array/amaclar"
android:prompt="@string/select"
/>

</LinearLayout>

最佳答案

您的 LinearLayout id 是

 android:id="@+id/selectLayout"

但是你有这个

selectLayout = (LinearLayout) findViewById(R.id.saffet);

所以改成

selectLayout = (LinearLayout) findViewById(R.id.selectLayout);

The application may be doing too much work on its main thread.

您的主线程是 ui 线程。作为 commonsware 建议使用 traceview。您是否有其他 Activity 进行一些密集计算,因为我在 Select.java 中看不到很多计算。如果是这样,请使用 threadasynctask

关于android - 当尝试使用 addView 获取 : "Skipped 63 frames! The application may be doing too much work on its main thread" 添加 layoutinflater,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19094916/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com