- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我尝试制作一个使用 GPS 进行地理定位的 Android 应用程序,但是当我运行模拟器时,我收到这条消息:appname HAS unfortunately stopped.
为什么我会收到这条消息?我的代码没有错误。
我的.java:
package com.android.geolocalisation3;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationProvider;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.widget.Toast;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
public class Geo3MainActivity extends MapActivity implements LocationListener {
private MapView mapView;
private MapController mc;
private LocationManager lm;
private double latitude=122;
private double longitude=37;
private double altitude=0;
private float accuracy=0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_geo3_main);
mapView = (MapView) this.findViewById(R.id.mapView);
mapView.setBuiltInZoomControls(true);
mc = mapView.getController();
mc.setZoom(17);
}
@Override
protected void onResume() {
super.onResume();
lm = (LocationManager) this.getSystemService(LOCATION_SERVICE);
if (lm.isProviderEnabled(LocationManager.GPS_PROVIDER))
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 0,
this);
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000, 0,
this);
}
@Override
protected void onPause() {
super.onPause();
lm.removeUpdates(this);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
mapView.setSatellite(true);
return true;
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
mapView.setSatellite(false);
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_geo3_main, menu);
return true;
}
@Override
public void onLocationChanged(Location location) {
//altitude = location.getAltitude();
///accuracy = location.getAccuracy();
String msg = String.format(
getResources().getString(R.string.new_location), latitude,
longitude, altitude, accuracy);
Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
GeoPoint p = new GeoPoint((int) (latitude * 1E6), (int) (longitude * 1E6));
mc.animateTo(p);
mc.setCenter(p);
}
@Override
public void onProviderDisabled(String provider) {
String msg = String.format(
getResources().getString(R.string.provider_disabled), provider);
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
}
@Override
public void onProviderEnabled(String provider) {
String msg = String.format(
getResources().getString(R.string.provider_enabled), provider);
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
String newStatus = "";
switch (status) {
case LocationProvider.OUT_OF_SERVICE:
newStatus = "OUT_OF_SERVICE";
break;
case LocationProvider.TEMPORARILY_UNAVAILABLE:
newStatus = "TEMPORARILY_UNAVAILABLE";
break;
case LocationProvider.AVAILABLE:
newStatus = "AVAILABLE";
break;
}
String msg = String.format(
getResources().getString(R.string.provider_disabled), provider,
newStatus);
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
}
}
我的日志错误:
07-28 00:00:01.054: E/StrictMode(621): A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
07-28 00:00:01.054: E/StrictMode(621): java.lang.Throwable: Explicit termination method 'close' not called
07-28 00:00:01.054: E/StrictMode(621): at dalvik.system.CloseGuard.open(CloseGuard.java:184)
07-28 00:00:01.054: E/StrictMode(621): at android.database.CursorWindow.<init>(CursorWindow.java:137)
07-28 00:00:01.054: E/StrictMode(621): at android.database.CursorWindow.<init>(CursorWindow.java:41)
07-28 00:00:01.054: E/StrictMode(621): at android.database.CursorWindow$1.createFromParcel(CursorWindow.java:681)
07-28 00:00:01.054: E/StrictMode(621): at android.database.CursorWindow$1.createFromParcel(CursorWindow.java:679)
07-28 00:00:01.054: E/StrictMode(621): at android.database.BulkCursorDescriptor.readFromParcel(BulkCursorDescriptor.java:75)
07-28 00:00:01.054: E/StrictMode(621): at android.database.BulkCursorDescriptor$1.createFromParcel(BulkCursorDescriptor.java:34)
07-28 00:00:01.054: E/StrictMode(621): at android.database.BulkCursorDescriptor$1.createFromParcel(BulkCursorDescriptor.java:30)
07-28 00:00:01.054: E/StrictMode(621): at android.content.ContentProviderProxy.query(ContentProviderNative.java:369)
07-28 00:00:01.054: E/StrictMode(621): at android.content.ContentResolver.query(ContentResolver.java:370)
07-28 00:00:01.054: E/StrictMode(621): at android.content.CursorLoader.loadInBackground(CursorLoader.java:65
07-28 00:00:01.054: E/StrictMode(621): at android.content.CursorLoader.loadInBackground(CursorLoader.java:43)
07-28 00:00:01.054: E/StrictMode(621): at android.content.AsyncTaskLoader.onLoadInBackground(AsyncTaskLoader.java:301)
07-28 00:00:01.054: E/StrictMode(621): at android.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:68)
07-28 00:00:01.054: E/StrictMode(621): at android.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:56)
07-28 00:00:01.054: E/StrictMode(621): at android.os.AsyncTask$2.call(AsyncTask.java:287)
07-28 00:00:01.054: E/StrictMode(621): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
07-28 00:00:01.054: E/StrictMode(621): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
07-28 00:00:01.054: E/StrictMode(621): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
07-28 00:00:01.054: E/StrictMode(621): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
07-28 00:00:01.054: E/StrictMode(621): at java.lang.Thread.run(Thread.java:856)
07-28 00:00:01.144: E/StrictMode(621): A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
07-28 00:00:01.144: E/StrictMode(621): java.lang.Throwable: Explicit termination method 'close' not called
07-28 00:00:01.144: E/StrictMode(621): at dalvik.system.CloseGuard.open(CloseGuard.java:184)
07-28 00:00:01.144: E/StrictMode(621): at android.content.ContentResolver$CursorWrapperInner.<init>(ContentResolver.java:1835)
07-28 00:00:01.144: E/StrictMode(621): at android.content.ContentResolver.query(ContentResolver.java:392)
07-28 00:00:01.144: E/StrictMode(621): at android.content.CursorLoader.loadInBackground(CursorLoader.java:65)
07-28 00:00:01.144: E/StrictMode(621): at android.content.CursorLoader.loadInBackground(CursorLoader.java:43)
07-28 00:00:01.144: E/StrictMode(621): at android.content.AsyncTaskLoader.onLoadInBackground(AsyncTaskLoader.java:301)
07-28 00:00:01.144: E/StrictMode(621): at android.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:68)
07-28 00:00:01.144: E/StrictMode(621): at android.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:56)
07-28 00:00:01.144: E/StrictMode(621): at android.os.AsyncTask$2.call(AsyncTask.java:287)
07-28 00:00:01.144: E/StrictMode(621): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
07-28 00:00:01.144: E/StrictMode(621): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
07-28 00:00:01.144: E/StrictMode(621): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
07-28 00:00:01.144: E/StrictMode(621): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
07-28 00:00:01.144: E/StrictMode(621): at java.lang.Thread.run(Thread.java:856)
07-28 00:00:45.364: E/PowerManagerService(157): Excessive delay setting brightness: 144ms, mask=2
07-28 00:00:45.544: E/PowerManagerService(157): Excessive delay setting brightness: 139ms, mask=2
07-28 00:00:45.764: E/PowerManagerService(157): Excessive delay setting brightness: 211ms, mask=2
07-28 00:00:45.994: E/PowerManagerService(157): Excessive delay setting brightness: 224ms, mask=2
07-28 00:05:21.293: E/ThrottleService(157): problem during onPollAlarm: java.lang.IllegalStateException: problem parsing stats: java.io.FileNotFoundException: /proc/net/xt_qtaguid/iface_stat_all: open failed: ENOENT (No such file or directory)
最佳答案
不知何故,您的日志消息的格式丢失了,使它们很难阅读。
日志消息的第一行给出了线索:
07-28 00:00:01.054: E/StrictMode(621): A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
07-28 00:00:01.054: E/StrictMode(621): java.lang.Throwable: Explicit termination method 'close' not called
某些对象如文件或游标需要明确关闭。简单地删除对它们的引用是不够的。未能关闭该对象会导致资源泄漏,系统会通过终止您的应用来检测并使用react。
不幸的是,堆栈跟踪仅向您显示检测到泄漏的位置,而不是最初导致泄漏的原因。
您的代码中是否有与数据库相关的部分没有向我们展示?日志消息表明 Cursor 对象存在问题。
假设您正在使用数据库,请查看您的数据库访问代码并确保关闭您打开的每个游标和数据库。确保数据库处理函数中的所有“返回”语句在返回之前关闭相关对象。确保在让异常进入堆栈之前捕获所有可能的异常并关闭游标对象。为此,我自由使用了 finally{} block 。
我的数据库代码通常如下所示:
protected DbRec findById(String ident) {
DbRec rval;
Cursor cursor = null;
try {
if( (cursor = findCursorById(ident)) == null )
return null;
rval = newRecord();
rval.fillFromCursor(cursor);
} catch (Exception e) {
Log.w(TAG, "Failed to read database record: " + e);
rval = null;
} finally {
if( cursor != null ) cursor.close();
}
return rval;
}
ETA:我冒昧地粘贴了您评论中的日志消息:
E/AndroidRuntime(808): java.lang.RuntimeException: Unable to resume activity {com.android.geolocalisation3/com.android.geolocalisation3.Geo3MainActivity}: java.lang.IllegalArgumentException: requested provider network doesn't exisit
E/AndroidRuntime(808): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2575)
E/AndroidRuntime(808): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2603)
E/AndroidRuntime(808): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2089)
E/AndroidRuntime(808): at android.app.ActivityThread.access$600(ActivityThread.java:130)
E/AndroidRuntime(808): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
E/AndroidRuntime(808): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(808): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(808): at android.app.ActivityThread.main(ActivityThread.java:4745)
E/AndroidRuntime(808): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(808): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(808): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
E/AndroidRuntime(808): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
E/AndroidRuntime(808): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(808): Caused by: java.lang.IllegalArgumentException: requested provider network doesn't exisit
E/AndroidRuntime(808): at android.os.Parcel.readException(Parcel.java:1429)
E/AndroidRuntime(808): at android.os.Parcel.readException(Parcel.java:1379)
E/AndroidRuntime(808): at android.location.ILocationManager$Stub$Proxy.requestLocationUpdates(ILocationManager.java:646)
E/AndroidRuntime(808): at android.location.LocationManager._requestLocationUpdates(LocationManager.java:660)
E/AndroidRuntime(808): at android.location.LocationManager.requestLocationUpdates(LocationManager.java:482)
E/AndroidRuntime(808): at com.android.geolocalisation3.Geo3MainActivity.onResume(Geo3MainActivity.java:49)
E/AndroidRuntime(808): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1184)
E/AndroidRuntime(808): at android.app.Activity.performResume(Activity.java:5082)
E/AndroidRuntime(808): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2565)
E/AndroidRuntime(808): ... 12 more
这是一个与之前不同的错误。它看起来像是位置提供者的名称(例如,“gps”在 onSaveInstanceState()
中保存错误,导致应用程序重新启动时崩溃。
关于android - 为什么Android模拟器显示 "unfortunately my_app_name has stopped"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11697152/
我最近在/ drawable中添加了一些.gifs,以便可以将它们与按钮一起使用。这个工作正常(没有错误)。现在,当我重建/运行我的应用程序时,出现以下错误: Error: Gradle: Execu
Android 中有返回内部存储数据路径的方法吗? 我有 2 部 Android 智能手机(Samsung s2 和 s7 edge),我在其中安装了一个应用程序。我想使用位于这条路径中的 sqlit
这个问题在这里已经有了答案: What's the difference between "?android:" and "@android:" in an android layout xml f
我只想知道 android 开发手机、android 普通手机和 android root 手机之间的实际区别。 我们不能从实体店或除 android marketplace 以外的其他地方购买开发手
自Gradle更新以来,我正在努力使这个项目达到标准。这是一个团队项目,它使用的是android-apt插件。我已经进行了必要的语法更改(编译->实现和apt->注释处理器),但是编译器仍在告诉我存在
我是android和kotlin的新手,所以请原谅要解决的一个非常简单的问题! 我已经使用导航体系结构组件创建了一个基本应用程序,使用了底部的导航栏和三个导航选项。每个导航选项都指向一个专用片段,该片
我目前正在使用 Facebook official SDK for Android . 我现在正在使用高级示例应用程序,但我不知道如何让它获取应用程序墙/流/状态而不是登录的用户。 这可能吗?在那种情
我在下载文件时遇到问题, 我可以在模拟器中下载文件,但无法在手机上使用。我已经定义了上网和写入 SD 卡的权限。 我在服务器上有一个 doc 文件,如果用户单击下载。它下载文件。这在模拟器中工作正常但
这个问题在这里已经有了答案: What is the difference between gravity and layout_gravity in Android? (22 个答案) 关闭 9
任何人都可以告诉我什么是 android 缓存和应用程序缓存,因为当我们谈论缓存清理应用程序时,它的作用是,缓存清理概念是清理应用程序缓存还是像内存管理一样主存储、RAM、缓存是不同的并且据我所知,缓
假设应用程序 Foo 和 Eggs 在同一台 Android 设备上。任一应用程序都可以获取设备上所有应用程序的列表。一个应用程序是否有可能知道另一个应用程序是否已经运行以及运行了多长时间? 最佳答案
我有点困惑,我只看到了从 android 到 pc 或者从 android 到 pc 的例子。我需要制作一个从两部手机 (android) 连接的 android 应用程序进行视频聊天。我在想,我知道
用于使用 Android 以编程方式锁定屏幕。我从 Stackoverflow 之前关于此的问题中得到了一些好主意,并且我做得很好,但是当我运行该代码时,没有异常和错误。而且,屏幕没有锁定。请在这段代
文档说: android:layout_alignParentStart If true, makes the start edge of this view match the start edge
我不知道这两个属性和高度之间的区别。 以一个TextView为例,如果我将它的layout_width设置为wrap_content,并将它的width设置为50 dip,会发生什么情况? 最佳答案
这两个属性有什么关系?如果我有 android:noHistory="true",那么有 android:finishOnTaskLaunch="true" 有什么意义吗? 最佳答案 假设您的应用中有
我是新手,正在尝试理解以下 XML 代码: 查看 developer.android.com 上的文档,它说“starStyle”是 R.attr 中的常量, public static final
在下面的代码中,为什么当我设置时单选按钮的外观会发生变化 android:layout_width="fill_parent" 和 android:width="fill_parent" 我说的是
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 9
假设我有一个函数 fun myFunction(name:String, email:String){},当我调用这个函数时 myFunction('Ali', 'ali@test.com ') 如何
我是一名优秀的程序员,十分优秀!