Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin android应用程序在恢复时崩溃_Android_Xamarin_Xamarin.android - Fatal编程技术网

Xamarin android应用程序在恢复时崩溃

Xamarin android应用程序在恢复时崩溃,android,xamarin,xamarin.android,Android,Xamarin,Xamarin.android,显然,我们的Xamarin本机应用程序在Android上有时会在一段时间没有使用后崩溃,但我无法复制它 似乎崩溃是在我们的选项卡式应用程序中膨胀一个片段时造成的。知道这是什么吗?报告仅针对安卓7,尽管该应用的用户很少,因此可能是巧合。该应用的目标是安卓7.0,但之前当该应用的目标框架设置为安卓6.0时,错误是相同的(有几行不同)。幸运的是谷歌搜索 2017年11月17日更新:我已经尝试捕获异常(在BuildingListFragment中看到的两行代码周围尝试阻塞)并抛出我自己的异常,但是没有捕

显然,我们的Xamarin本机应用程序在Android上有时会在一段时间没有使用后崩溃,但我无法复制它

似乎崩溃是在我们的选项卡式应用程序中膨胀一个片段时造成的。知道这是什么吗?报告仅针对安卓7,尽管该应用的用户很少,因此可能是巧合。该应用的目标是安卓7.0,但之前当该应用的目标框架设置为安卓6.0时,错误是相同的(有几行不同)。幸运的是谷歌搜索

2017年11月17日更新:我已经尝试捕获异常(在BuildingListFragment中看到的两行代码周围尝试阻塞)并抛出我自己的异常,但是没有捕获到,相同的异常显示在google play控制台崩溃报告中。这对我来说仍然是一个问题,希望能得到帮助

android.runtime.JavaProxyThrowable: at AlarmKeeper.Droid.BuildingListFragment.OnCreateView (Android.Views.LayoutInflater inflater, Android.Views.ViewGroup container, Android.OS.Bundle savedInstanceState) [0x00028] in <8584c8930bb24ecaa4ab45fc24b599b6>:0
at Android.Support.V4.App.Fragment.n_OnCreateView_Landroid_view_LayoutInflater_Landroid_view_ViewGroup_Landroid_os_Bundle_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_inflater, System.IntPtr native_container, System.IntPtr native_savedInstanceState) [0x00020] in <1e89c43d3c7d48b5ba69bfc0b1bdf114>:0
at (wrapper dynamic-method) System.Object:fc5b2ba7-0fe0-4b23-b87c-c512566cc5f6 (intptr,intptr,intptr,intptr,intptr)
at md5446876e046c50288069676734a083198.BuildingListFragment.n_onCreateView (Native Method)
at md5446876e046c50288069676734a083198.BuildingListFragment.onCreateView (BuildingListFragment.java:30)
at android.support.v4.app.Fragment.performCreateView (Fragment.java:2248)
at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1340)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState (FragmentManager.java:1569)
at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1636)
at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated (FragmentManager.java:2977)
at android.support.v4.app.FragmentController.dispatchActivityCreated (FragmentController.java:192)
at android.support.v4.app.FragmentActivity.onStart (FragmentActivity.java:603)
at android.support.v7.app.AppCompatActivity.onStart (AppCompatActivity.java:178)
at android.app.Instrumentation.callActivityOnStart (Instrumentation.java:1256)
at android.app.Activity.performStart (Activity.java:6972)
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2937)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3045)
at android.app.ActivityThread.-wrap14 (ActivityThread.java)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1642)
at android.os.Handler.dispatchMessage (Handler.java:102)
at android.os.Looper.loop (Looper.java:154)
at android.app.ActivityThread.main (ActivityThread.java:6776)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1410)
适配器:

public class TabAdapter : FragmentPagerAdapter, IconPagerAdapter
{
    private MainActivity _context;

    public TabAdapter (MainActivity context, FragmentManager p0) : base(p0)
    {
        _context = context;
    }

    public override Fragment GetItem(int position)
    {
        switch (position) {
        case 0:
            return new BuildingListFragment ();
        case 1:
            return AlarmListFragment.NewInstance("active");
        case 2:
            return AlarmListFragment.NewInstance("confirmed");
        case 3:
            return new ProfileFragment();
        }

        return null;
    }

    public override int Count
    {
        get{ return 4; }
    }

    ...
}
主要活动:

    private TabAdapter _adapter;
    private ViewPager _viewPager;

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        ...

            _viewPager = FindViewById<ViewPager>(Resource.Id.main_view_pager);
            _adapter = new TabAdapter(this, SupportFragmentManager);
            _viewPager.Adapter = _adapter;
            _viewPager.AddOnPageChangeListener(this);

            _tabLayout = FindViewById<TabLayout>(Resource.Id.main_tab_layout);
            TabLayoutHelper.SetupWithViewPager(_tabLayout, _viewPager);

            var activeItem = Intent.GetIntExtra(ArgActiveFragment, 0);
            if (activeItem != 0)
            {
                _viewPager.SetCurrentItem(activeItem, false);
            }
private TabAdapter\u适配器;
私用阅览器(ViewPager);;
创建时受保护的覆盖无效(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
...
_viewPager=FindViewById(Resource.Id.main\u view\u pager);
_adapter=新选项卡adapter(此选项卡为SupportFragmentManager);
_适配器=_适配器;
_viewPager.AddOnPageChangeListener(此);
_tabLayout=findviewbyd(Resource.Id.main\u选项卡\u布局);
TabLayoutHelper.SetupWithViewPager(\u tabLayout,\u viewPager);
var activeItem=Intent.GetIntExtra(ArgActiveFragment,0);
如果(activeItem!=0)
{
_viewPager.SetCurrentItem(activeItem,false);
}
BuildingListFragment.axml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:background="@color/background">
    <LinearLayout
        android:id="@+id/error_container"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:background="@color/red"
        android:gravity="center"
        android:visibility="gone">
        <TextView
            android:id="@+id/error_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@color/white"
            android:textSize="16dp" />
    </LinearLayout>
    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/building_list_refresh"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:minWidth="25px"
            android:minHeight="25px"
            android:clickable="true">
            <ListView
                android:id="@+id/building_list"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:paddingTop="15dp"
                android:clipToPadding="false"
                android:divider="@color/light_grey"
                android:dividerHeight="1dp" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textStyle="normal"
                android:textSize="15dp"
                android:gravity="center"
                android:text="@string/no_buildings_in_list"
                android:id="@+id/no_buildings_text"
                android:textColor="@color/grey"
                android:layout_gravity="center" />
        </FrameLayout>
    </android.support.v4.widget.SwipeRefreshLayout>
</LinearLayout>


不确定您是否仍然存在此问题,但我在遇到类似问题时发现了此线程;启用“不保留活动”选项后,我无法使崩溃发生,但我通过将“后台进程限制”选项设置为“最多1个进程”成功解决了该问题.

活动
正在恢复时,您的项目会崩溃?恢复活动和片段是有效的。据一位用户说,他告诉我,这可能发生在几个小时没有使用应用程序的情况下。这与安卓的墓碑机制有关。您需要探索如何保存应用程序的状态,然后如何从中恢复。您可以启用手机/仿真器上的“不保留活动”选项可能会重现此问题。我启用了“不保留活动”,但没有重现错误。更新了描述。未捕获异常。已修复。某些值未被持久化。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:background="@color/background">
    <LinearLayout
        android:id="@+id/error_container"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:background="@color/red"
        android:gravity="center"
        android:visibility="gone">
        <TextView
            android:id="@+id/error_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@color/white"
            android:textSize="16dp" />
    </LinearLayout>
    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/building_list_refresh"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:minWidth="25px"
            android:minHeight="25px"
            android:clickable="true">
            <ListView
                android:id="@+id/building_list"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:paddingTop="15dp"
                android:clipToPadding="false"
                android:divider="@color/light_grey"
                android:dividerHeight="1dp" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textStyle="normal"
                android:textSize="15dp"
                android:gravity="center"
                android:text="@string/no_buildings_in_list"
                android:id="@+id/no_buildings_text"
                android:textColor="@color/grey"
                android:layout_gravity="center" />
        </FrameLayout>
    </android.support.v4.widget.SwipeRefreshLayout>
</LinearLayout>